当前位置:  开发笔记 > 编程语言 > 正文

linq2sql:无法使用已在使用的密钥添加实体

如何解决《linq2sql:无法使用已在使用的密钥添加实体》经验,为你挑选了3个好方法。

我有一个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();
    }

这种方法通常工作正常,但过了一段时间我得到错误"无法添加一个已经在使用的密钥的实体".



1> vealer..:

我收到此错误是因为我忘记将数据库中的主键字段设置为"身份规范"(自动增量).当我改变这个时,我很好.卫生署!



2> bruno conde..:

我认为如果你已经加载了Attach一个实体,就会发生这个错误DataContext.

导致错误的代码与您在此处显示的完全相同?创建新的后OffertaDataContext你在查询之前的任何内容Attach吗?


是的,我愿意.我从数据库中获取了旧记录以检查新的一些属性,并且我使用了相同的DataContext.我解决了两个sepparate使用条款.

3> Julio Nobre..:

如果您一次插入多个实体,可能只是想在当前数据上下文中插入重复的实体。我知道这太简单了,但这只是发生在我自己身上。

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有