gpt4 book ai didi

c# - Linq to Entity AcceptAllChanges 保存更改

转载 作者:可可西里 更新时间:2023-11-01 08:05:59 24 4
gpt4 key购买 nike

以下有什么区别:

        db.AcceptAllChanges();
// vs
db.SaveChanges();

db.AddToCustomer()
// vs
db.Customers.AddObject(Mycustomer);

以及为什么有 db.Customers.DeleteObject(Mycustomer); 而没有 db.DeleteFromCustomer(Mycustomer);

我应该什么时候使用它们?

Entity Framework 也是线程安全的吗?我的意思是,如果两个线程同时更新上下文中的对象,它会崩溃吗?

提前致谢

最佳答案

db.AcceptAllChanges() 假定您已完成任何关联的更改历史记录并将其丢弃 - 如果您有任何进一步的问题,您将无法恢复这些更改。 db.SaveChanges(false) 会在内存中保留这些更改,以防出现问题。

参见 http://blogs.msdn.com/b/alexj/archive/2009/01/11/savechanges-false.aspx以获得更深入的答案。

db.AddToCustomer()db.Customers.AddObject() 的强类型包装器。看看它的定义,你就会明白我的意思。我会纯粹使用 db.AddToCustomer() 方法,因为它是强类型的,并为您提供编译时类型检查。

我想没有 DeleteFromCustomer() 的唯一原因是他们认为没有必要进行这项工作(人们倾向于添加多于删除)。然而,没有什么可以阻止您创建自己的扩展方法来实现它。

EF 不是线程安全的,如果您想执行更新,您需要自己管理锁定。参见 http://blog.cincura.net/230902-multithreading-with-entity-framework/更多 :)

关于c# - Linq to Entity AcceptAllChanges 保存更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5063745/

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