Oracle.EntityFrameworkCore 5.12.3 CLOB字段返回null的读取问题咨询
Oracle EF Core读取CLOB字段返回null解决方案
- 首先确认实体类中对应CLOB字段的属性类型为
string,不要使用byte[]等其他类型,无特殊需求不要给该属性加[Required]注解,避免空值约束导致赋值异常。 - 移除Fluent API配置中的
.IsUnicode(false)配置项,该配置会强制映射到VARCHAR2类型,与CLOB的存储格式冲突,正确Fluent API配置如下:
modelBuilder.Entity<Email>() .Property(a => a.Body) .HasColumnName("BODY") .HasColumnType("CLOB");
- 如果你使用数据注解配置,保留原有
[Column("BODY", TypeName = "CLOB")]即可,无需额外添加其他属性。 - 确认你的Oracle EF Core Provider为最新稳定版,旧版本默认开启大字段延迟加载,可在上下文配置中添加兼容性配置适配你使用的数据库版本:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // 数据库版本为12c及以上则替换为"12c" optionsBuilder.UseOracle("你的数据库连接字符串", b => b.UseOracleSQLCompatibility("11g")); }
- 如果你查询时使用了Select投影,确认投影逻辑中包含了CLOB对应的属性,避免字段被主动忽略。
操作完成后重新执行查询即可正常读取CLOB字段内容。
内容的提问来源于stack exchange,提问作者David Kiff
相关产品推荐
相关产品推荐

