gpt4 book ai didi

linq - Entity Framework 4 (CTP 5) 并发

转载 作者:行者123 更新时间:2023-12-02 06:43:15 26 4
gpt4 key购买 nike

自从我读到 Code-First,我发现这可能有问题(虽然它只是一个预览)我有 2 个关于 EF4 CTP5 版本的问题如下:

正如它所说的“新的更改跟踪 API” 但它不跟踪我的变化 猜测。与 LINQ to SQL 比较我 举个例子看看 每种方法 react :

LINQ 到 SQL:

Dim db2 As New LINQDataContext
Dim db3 As New LINQDataContext

db2.Product.FirstOrDefault(Function(m) m.ID = 100).Name = "Change1"
db3.Product.FirstOrDefault(Function(m) m.ID = 100).Name = "Change2"

db2.SubmitChanges()
db3.SubmitChanges()

EF 4 CTP5:

Dim db2 As New ProductContext
Dim db3 As New ProductContext

db2.Product.FirstOrDefault(Function(m) m.ID = 100).Name = "Change1"
db3.Product.FirstOrDefault(Function(m) m.ID = 100).Name = "Change2"

db2.SaveChanges()
db3.SaveChanges()

这些代码仅在上下文中有所不同。在 LINQ to SQL 中,第二个 SubmitChanges 会引发“未找到或更改行”的异常。,但在 EF 中它将忽略更改并继续更改行两次,我认为这很糟糕,因为我们必须考虑并发,对吧?

最佳答案

关注您的第一个比较,我相信您在 LINQ to SQL 中默认启用了一些乐观并发检查。在 EF 中,您必须显式标记要检查并发性的任何属性。由于您很可能没有对 Name 属性执行此操作,因此 EF 不关心有人在另一个数据库命令中更改了 Product 名称。

我还想指出,这并不是特定的代码优先行为,而是整个 EF 中的行为。如果您创建一个实体数据模型,您还必须明确标记属性以进行并发检查。

如果您使用的是流畅的 API,请查找 IsConcurrencyToken 作为要在属性上设置的属性。如果您使用注释,请查看 ConcurrencyCheckAttribute。

第朱莉

关于linq - Entity Framework 4 (CTP 5) 并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674842/

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