首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架:如何在提交前检查值是否存在

问实体框架:如何在提交前检查值是否存在
EN

Stack Overflow用户
提问于 2010-12-18 02:19:46
回答 2查看 3.8K关注 0票数 0

我使用的是存储库模式。

我有一个国家的存储库,我正在使用一个服务来提交。我应该将检查放在哪里,以查看数据库中是否已经存在该国家/地区,我抛出一个异常?

有没有一种方法可以在一次数据库调用中做到这一点?(如果不存在,请选中并插入)?如果这是可能的,它能在服务层完成吗?(如果这是您建议我做检查的地方)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-18 02:28:48

由于多用户并发,您不能SELECT然后INSERT,并保证不会出现问题。因此,@Coding Gorilla提出的解决方案在高并发情况下可能会失败。

您应该将UNIQUE索引放在适当的DB列上,并处理(或让它浮出水面)如果国家/地区存在就会出现的DB异常。是的,您可以在服务层中执行此操作。这只是一次DB调用,它永远不会失败,因为DB服务器可以保护您免受并发问题的影响。

票数 1
EN

Stack Overflow用户

发布于 2010-12-18 02:26:59

是否将这种逻辑放在您的服务或存储库中是一个有点主观的问题。就我个人而言,我会检查并插入服务,如果它不存在,但也会让你的存储库在尝试插入之前验证它不存在,这样你的存储库就会强制执行一些“逻辑”,以防止你的数据库充满了重复数据。

该怎么做呢?

代码语言:javascript
复制
public void InsertIfNonExistant(string Country)
{
   if(!_myContext.Countries.Any(c=>c.Name == Country))
      InsertNewCountry(Country);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4473576

复制
相关文章

相似问题

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