使用Entity Framework 6创建计算字段

时间:2015-05-07 17:56:54

标签: c# entity-framework entity-framework-6

考虑EF 6实体的以下模型:

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

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

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您不需要将计算字段保存到数据库并且正在使用实体的POCO,您只需定义一个未映射的字段,如下所示:

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

答案 1 :(得分:0)

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

  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();