Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架6创建计算字段_C#_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# 使用实体框架6创建计算字段

C# 使用实体框架6创建计算字段,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,考虑EF 6实体的以下模型: Id(int,可空:false,标识:true) 名称(字符串) 数字(字符串) 我想将数字作为字母和id字段的组合保存。例如,如果在插入期间id值将为1,则我希望数字为A00000001。我试着在数字上使用DatabaseGenerated属性,但不起作用。问题是在插入时EF将不知道标识值是什么。有没有办法定义一个触发器来实现这一点,或者有没有其他方法可以实现这一点 谢谢 尝试先将项目插入数据库: Item myItem = new Item(){Name =

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

Id(int,可空:false,标识:true) 名称(字符串) 数字(字符串)

我想将数字作为字母和id字段的组合保存。例如,如果在插入期间id值将为1,则我希望数字为A00000001。我试着在数字上使用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(); }
}

试着先插入然后更新我真的希望我不必这样做。但事实就是这样。谢谢