使用 Entity Framework 创建一个计算域 6

Create a computed field using Entity Framework 6

考虑以下 EF 6 实体模型:

Id (int, nullable:false, identity: true) 姓名(字符串) 数字(字符串)。

我希望数字保留为字母和 ID 字段的组合。例如,如果在插入 id valuse 期间将为 1,我希望数字为 A00000001。我尝试在 Number 上使用 DatabaseGenerated 属性,但这没有用。问题是在插入时 EF 不知道身份值是什么。有没有一种方法可以定义触发器来执行此操作,或者是否有其他方法可以实现此目的。

谢谢!

首先尝试将项目插入数据库:

  Item myItem = new Item(){Name = "MyName"};
  dbcontext.Items.Add(myItem);
  dbcontext.SaveChages();

然后从数据库中取出项目并更新它:

  Item insertedItem = dbcontext.Items.Single(i => i.Id == myItem.Id);
  insertedItem.Number = insertedItem.Name + insertedItem.Id.toString();

  dbcontext.SaveChages();

如果您不需要将计算字段保存到数据库并且正在为实体使用 POCO,您可以像这样定义一个未映射的字段:

[NotMapped]
public string Number
{
    get { return Name + Id.ToString(); }
}