我在表中有一个列,例如,商店的名称,它应该保持唯一。我已将唯一约束添加到表中。
我准备在我的保存方法中添加一些代码,在尝试相同之前检查重复,但是......有什么理由不做同样的事情,让唯一约束抓住问题,然后以某种方式(使用实体框架),检查错误,并回复相应的回复?
这会保存'SELECT'......但是从代码中删除'业务逻辑'并允许数据库报告这样的后膛是一种好习惯吗?
而且我可以从发送到Entity Framework的SaveChanges()命令中得出错误是什么?
答案 0 :(得分:2)
不幸的是,实体框架没有很好的独特验证解决方案,因为我问了一会儿:
Options for Unique field in Entity Framework - navigation property to dbSet?
在SaveChanges()之前明确检查唯一性可让您优雅地展示友好和友善。向用户提供有意义的错误消息。
捕获数据库错误需要解析错误代码/文本,以确定是否违反了唯一性或发生了其他一些数据库错误。
因此,假设您将价值放在用户体验上,额外的数据库调用+次要模式破坏是可接受的成本IMO。唯一的检查代码可以在您的域/业务层中以某种方式进行推广,以使其保持在正确的位置。