我正在使用的数据库(我无法控制这一点(在一列中有空值,这似乎弄乱了我的代码。我想在项目的模型部分处理这个问题,因为它似乎是合适的地方。对我来说,创建一个客户获取器听起来是个好主意。
类
public string _DesignLink { get; set; }
public virtual string DesignLink {
get { return _DesignLink ?? ""; }
}
映射
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
modelBuilder.Entity<ToolPlan>().Property(t => t._DesignLink).HasColumnName("DesignLink");
...
}
这个逻辑在我脑海中起作用。创建一个虚拟属性以使 getter 工作,然后将该属性重新映射到实际列。给我的错误是:
One or more validation errors were detected during model generation:
System.Data.Entity.Edm.EdmProperty: Name: The specified name is not allowed: '_DesignLink'.
首次访问数据库时会发生此错误。如何使此列中的所有空值显示在项目中的空白处?
你有点艰难地解决这个问题。自定义 getter 不是一个糟糕的计划,但您只需要属性本身:
private string designLink;
public string DesignLink
{
get { return designLink ?? string.Empty; }
set { designLink = value; }
}
这应该是你所需要的。
你只需要一些NotMapppedAttribute
和ColumnAttribute
的装饰:
[Column("DesignLink")] // want this property to map to DB column
public string _DesignLink { get; set; }
public string DesignLink {
get { return _DesignLink ?? ""; }
}