Sql server 检查数据完整性问题,或让数据库处理

Sql server 检查数据完整性问题,或让数据库处理,sql-server,entity-framework,Sql Server,Entity Framework,我在一个表中有一列,例如,这是一个存储的名称,它应该保持唯一性。我已将唯一约束添加到表中 在尝试相同的方法之前,我正要向我的save方法添加一些代码,该方法会检查重复的代码,但是。。。是否有任何理由不这样做,让唯一约束捕捉问题,然后(使用实体框架),检查错误,并用适当的回复进行回复 这将保存一个“SELECT”。。。但是,从代码中删除“业务逻辑”并允许数据库报告这样的错误,这是一种好的做法吗 从发送给Entity Framework的SaveChanges()命令中,我能告诉您错误是什么吗?不幸

我在一个表中有一列,例如,这是一个存储的名称,它应该保持唯一性。我已将唯一约束添加到表中

在尝试相同的方法之前,我正要向我的save方法添加一些代码,该方法会检查重复的代码,但是。。。是否有任何理由不这样做,让唯一约束捕捉问题,然后(使用实体框架),检查错误,并用适当的回复进行回复

这将保存一个“SELECT”。。。但是,从代码中删除“业务逻辑”并允许数据库报告这样的错误,这是一种好的做法吗


从发送给Entity Framework的SaveChanges()命令中,我能告诉您错误是什么吗?

不幸的是,Entity Framework没有很好的唯一验证解决方案,正如我刚才所问的:

在SaveChanges()之前显式检查唯一性允许您优雅地向用户显示友好且有意义的错误消息

捕获数据库错误需要分析错误代码/文本,以确定是否违反了唯一性或发生了其他数据库错误


因此,假设您重视用户体验,那么额外的数据库调用+轻微的模式破坏在我看来是可以接受的成本。独特的检查代码可以在您的域/业务层中进行推广,以使其保持在正确的位置。

谢谢。我在怀疑。这对EF来说有点短视。错误处理。好啊我会自己检查的。谢谢。这可能是EF的短视。。。。。直到你自己尝试去实现它。我在不久前尝试过实体框架扩展,将其推广为域级验证非常困难!不同意没有好的解决办法。看到这个和这个答案了吗