我有一个linq2sql设置,其中对象从客户端发送(通过flourinefx flex)并将它们附加到新的datacontext,如下所示:
我还有一个在整个会话中使用的"全局"datacontext.
public static void Update(Enquiry enquiry) { OffertaDataContext db = new OffertaDataContext(); db.Enquiries.Attach(enquiry); db.Refresh(RefreshMode.KeepCurrentValues, enquiry); db.SubmitChanges(); }
这种方法通常工作正常,但过了一段时间我得到错误"无法添加一个已经在使用的密钥的实体".
我收到此错误是因为我忘记将数据库中的主键字段设置为"身份规范"(自动增量).当我改变这个时,我很好.卫生署!
我认为如果你已经加载了Attach
一个实体,就会发生这个错误DataContext
.
导致错误的代码与您在此处显示的完全相同?创建新的后OffertaDataContext
你在查询之前的任何内容Attach
吗?
如果您一次插入多个实体,可能只是想在当前数据上下文中插入重复的实体。我知道这太简单了,但这只是发生在我自己身上。