首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在web应用中处理一对多的实体框架乐观并发?

如何在web应用中处理一对多的实体框架乐观并发?
EN

Stack Overflow用户
提问于 2018-05-10 01:56:56
回答 1查看 262关注 0票数 0

Entity Framework6如何处理ASP.NET MVC应用程序中一对多关系的乐观并发?我很难确定哪个EF应该能够自己处理,而不是我必须手动处理。我在web应用中找到的几乎所有关于EF并发检查的文章都只处理RowVersion列或时间戳列被用作并发字段的简单情况;它们似乎没有提到关系并发检查。

我将简要地解释一下,因为我假设这对能够回答这个问题的人来说并不是什么新鲜事。由于这是一个web应用程序,因此我在每次从服务器往返时都会处理实体框架状态。在更新表上的列的简单情况下,我必须将用于乐观并发(例如RowVersion)的字段值保存到HTML页面上,然后在提交页面时将它们发送回服务器。在提交页面时,我使用EF检索当前数据库记录,用来自HTML页面的并发值更新它,将EF DbEntityEntry对象的状态设置为EntityState.Unchanged,然后将页面中的其他值设置为EF记录。然后,EF可以在调用SaveChanges()时执行自己的并发检查。那么,对于这种模式,一对多关系应该如何工作呢?

这里有一个具体的(尽管是人为的)示例。假设我有一个一张专辑对应多首歌曲的模型。User1和User2都通过更新歌曲来同时开始修改同一张专辑。User1添加了一首歌,User2删除了一首歌。我应该怎么做才能让EF在User2删除一首歌之前自动检测到User1添加了一首歌(反之亦然)?或者我必须手动检测歌曲列表是否已更改?一种可能的方法是在添加或删除歌曲时更新专辑上的SongModifiedVersion列,并让EF使用SongModifiedVersion作为并发字段,类似于Entity Framework Concurrency with Multiple Tables/Entities中的建议。还有别的办法吗?

谢谢,比尔

EN

回答 1

Stack Overflow用户

发布于 2018-05-11 23:20:05

我通常依靠我的DB事务和隔离级别支持来处理并发,而不是手动处理。在这种情况下,我会检查您的数据库的隔离级别最适合您的业务并发需求/模型。

我自己也从来不会直接手动更改EntityState,而是依赖EF来跟踪更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50259421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档