【发布时间】:2019-08-17 04:13:59
【问题描述】:
我有需要与 Entity Framework Core 一起使用的模型类。不幸的是,我无法对这些类进行更改,并且它们都没有使用可为空的列,而它们映射到的数据库表确实具有可为空的列。 EF 在尝试将数据从数据库拉入模型类时抛出(预期的)异常。
有没有办法将 EF Core 配置为自动将列中的 NULL 映射到给定类型的默认值?
例如,
//Model class
class Foo
{
public int Id {get; set;}
public int Age {get; set;}
}
//DbContext
public class MyContext: DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyContext>(entity =>
{
entity.HasKey(e => new { e.Id });
entity.ToTable("Foo", "dbo");
entity.Property(e => e.Age).HasColumnName("Age");
}
}
}
目标是在请求数据时,Age 列中的 null 将成为默认类型(在本例中为 0)。
【问题讨论】:
-
起初,我认为value conversion 可以解决这个问题,但不幸的是,它不能转换
null。另见Allow HasConversion/ValueConverters to convert nulls
标签: .net mapping entity-framework-core