【发布时间】:2009-03-13 20:14:20
【问题描述】:
假设我有一张促销代码表和一张联系人表。每个联系人可以有 1 个促销代码,每个促销代码只能分配给 1 个联系人。我将如何使用一个分配程序,从表中选择一个促销代码,并将其分配给一个联系人,而不会出现并发问题/冲突。
最坏的情况:
- 联系人 A 请求代码。
- 找到第一个可用的促销代码,并从 DB 中选择促销代码 A。
- 联系人 B 请求代码。从数据库中找到并选择第一个可用的促销代码,促销代码 A。
- 对联系人 A 的更改已保存。
- 对联系人 B 的更改已保存。
现在,根据促销代码分配的存储方式,将会发生 2 件事中的 1 件事:
- 2 位联系人将分配相同的促销代码。
- 如果引发重复键异常,联系人 B 将收到错误消息。
仅供参考,我正在使用 HTTPContext 中保存的 DataContext,以便每个 HTTP 请求都可以使用它。不确定这是否重要。
那么,使用 C# 和实体框架,我如何才能在不遇到这些类型的冲突的情况下完成此促销代码分配?提前致谢!
【问题讨论】:
标签: c# database entity-framework database-design locking