考虑EF 6实体的以下模型:
Id(int,nullable:false,identity:true) 名称(字符串) 数字(字符串)。
我希望将数字作为字母和id字段的组合保留。例如,如果在插入id valuse期间为1,我希望number为A00000001。我尝试在Number上使用DatabaseGenerated属性,但这不起作用。问题是在插入时EF不知道什么是身份值。有没有办法定义触发器,或者是否有其他方法我可以实现这一点。
谢谢!
答案 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();