带有标识列的 EF Code First 父子插入 (HELP)
Posted
技术标签:
【中文标题】带有标识列的 EF Code First 父子插入 (HELP)【英文标题】:EF Code First Parent-Child insertions with identity columns (HELP) 【发布时间】:2013-01-02 10:35:28 【问题描述】:这对我来说很奇怪。 我有两个实体。销售状态(父)和销售(子)。
public class SalesStatus
[Key]
public int SalesStatusID get; set; /* this is identity column*/
public string Status get; set;
public virtual List<Sale> Sales get; set;
public class Sale
[Key]
public int SalesID get; set; /* this is identity column*/
//etc
SalesContext db = new SalesContext();
var ss = new SalesStatus
Status = "INQ",
Sales = new List<Sale>()
;
ss.Sales.Add(sale);
db.SalesStatus.Add(ss);
db.Entry(ss).State = EntityState.Added;
db.SaveChanges();
我有一个错误。 实体框架尝试插入具有 PK 值的新记录。 "无法为表中的标识列插入显式值"
但是当我将 EntityState 更改为 EntityState.Detached 或 EntityState.Unchanged 时。 子实体(销售)单独成功插入。(没有销售状态)
我一直很困惑。
我在下面找到了一些案例。但这对我的情况不起作用。 EF Code First Parent-Child insertions with identity columns
我使用 dotnet framework 4.0 / entity framework 4.1
【问题讨论】:
【参考方案1】:尝试更改主键名称(SalesID 为 SaleID)。可能是EF配置外键错误,
public class Sale
[Key]
public int SaleID get; set; /* this is identity column*/
//etc
【讨论】:
以上是关于带有标识列的 EF Code First 父子插入 (HELP)的主要内容,如果未能解决你的问题,请参考以下文章
使用 EF4 Code First 时如何控制生成的 nvarchar 列的长度?