gpt4 book ai didi

c# - 执行 DeleteOnSubmit()、SubmitChanges()、InsertOnSubmit()、SubmitChanges() 不工作(抛出 Entity Already exists 异常)!

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:10 25 4
gpt4 key购买 nike

我正在开发一个使用 Linq2SQL 进行数据访问的 WP7 芒果应用程序。我有一个 Note 实体,它有一个自动生成的 int 类型的键。

我第一次向数据库添加新注释时,操作正常,注释保存,然后如果我从数据库中删除它,它也会从数据库中删除。第一个实体始终为 Id=0。

然后,如果我想在删除第一个注释后添加一个新注释,我会得到一个异常,指出该实体已经存在。我得出结论,即使我在我的数据上下文中调用了 SubmitChanges,但 Id=0 的第一个实体并未被删除。

此外,我在我的存储库和同一存储库实例(出于性能原因的单例)上使用相同的数据上下文进行数据操作。为了确认该行为,我尝试连续调用但失败了!!!

this.DbContext.Notes.DeleteOnSubmit(value);
this.DbContext.SubmitChanges();
this.DbContext.Notes.InsertOnSubmit(value);
this.DbContext.SubmitChanges();

它说它不能添加一个已经存在的实体。对这种行为有什么解释吗?提前致谢。

注意:当我使用数据上下文的两个不同实例时,这种行为就消失了。

最佳答案

好吧,你最后真的回答了你自己的问题。让我们逐步完成:

  1. 您从数据库中获取 DbContext
  2. 您删除一个条目并提交数据库(OK fine)
  3. 现在在插入时使用数据库的旧实例。

每次你做一个

SubmitChanges();

您已更新您的引用,因为它是旧的。

因此,如果您有一个执行多个事务的方法,您需要刷新局部变量。

ONE 数据库实例应该做ONE改变

关于c# - 执行 DeleteOnSubmit()、SubmitChanges()、InsertOnSubmit()、SubmitChanges() 不工作(抛出 Entity Already exists 异常)!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9181558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com