【发布时间】:2011-06-03 09:32:10
【问题描述】:
我有一张名为farmers 的表。每个农民都有一个强制性的指定国家。
当我使用 antity 框架向数据库添加一个新农民时,我在 country 表上遇到了违规行为。看起来实体框架想将国家添加到国家表中,但我只想要农民表中的 guid:
违反主键约束“PK_Country”。无法插入 对象“dbo.Country”中的重复键。该声明已 终止。
有人可以告诉我我做错了什么吗?这里是插入代码:
newFarmer.Guid = Guid.NewGuid();
ents.Farmer.AddObject(newFarmer);
ents.SaveChanges();
return newFarmer;
我什至检查了这个国家的状态,它说没有改变。
【问题讨论】:
-
将这两个实体和表的结构添加到问题中。
-
您的代码 sn-p 中最重要的部分丢失了:从哪里获得分配给
newFarmer.Country的Country对象?通常,当您调用AddObject(newFarmer)时,人们会立即猜测您的Country对象未附加到ObjectContext,这将导致Country对象的INSERT。但是它的状态不能像你说的那样是unchanged。你的例外是 - 状态为unchanged的对象 - 几乎不可能。您的问题描述和代码中必须缺少一些重要信息。
标签: entity-framework entity-framework-4 constraints primary-key