在模型(EF)中替换数据库中的空值

时间:2013-10-03 18:26:35

标签: asp.net-mvc entity-framework

我正在使用的数据库(我对此无法控制)在一列似乎弄乱了我的代码中有空值。我想在项目的Model部分处理这个问题,因为它似乎是合适的地方。创建一个客户吸气剂听起来对我来说是一个好主意。

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'.

首次访问数据库时出现此错误。如何使此列中的所有空值显示在项目中的空白处?

2 个答案:

答案 0 :(得分:1)

你正在努力解决这个问题。自定义getter并不是一个糟糕的计划,但你只需要属性本身:

private string designLink;
public string DesignLink
{
    get { return designLink ?? string.Empty; }
    set { designLink = value; }
}

这应该是你所需要的一切。

答案 1 :(得分:0)

您需要对NotMapppedAttributeColumnAttribute

进行一些装饰
[Column("DesignLink")] // want this property to map to DB column
public string _DesignLink { get; set; } 

public string DesignLink {
    get { return _DesignLink ?? ""; }
}