C# 实体框架代码优先vs数据库优先:陷阱关系约束问题

C# 实体框架代码优先vs数据库优先:陷阱关系约束问题,c#,entity-framework,C#,Entity Framework,两个问题: 实体框架(代码优先)是否在命中数据库(即在应用程序中)之前捕获“关系约束”问题(例如外键约束冲突) 据我所知,实体框架(DB-First)不会在应用程序空间中捕获“关系约束”问题;它会一直等待,直到SaveChanges方法由于从数据库引发约束冲突错误而失败。有没有办法强制它自动检查关系 没有 没有 对不起 您真的不希望这样-另一个用户可能会将数据插入数据库,从而使外键引用突然有效 不太清楚,我想我已经很清楚了。您不希望EF在命中数据库之前验证关系约束-它应该始终检查数据库以确保您的

两个问题:

  • 实体框架(代码优先)是否在命中数据库(即在应用程序中)之前捕获“关系约束”问题(例如外键约束冲突)

  • 据我所知,实体框架(DB-First)不会在应用程序空间中捕获“关系约束”问题;它会一直等待,直到SaveChanges方法由于从数据库引发约束冲突错误而失败。有没有办法强制它自动检查关系

  • 没有

  • 没有

  • 对不起


    您真的不希望这样-另一个用户可能会将数据插入数据库,从而使外键引用突然有效

    不太清楚,我想我已经很清楚了。您不希望EF在命中数据库之前验证关系约束-它应该始终检查数据库以确保您的数据有效,因为其他人可能修改了数据库中的某些数据,使您的保存无效,甚至突然有效。它不能只是“知道”你的数据是正确的。明白了。谢谢可能这只是另一个面试问题。:)让我们看看我现在能混淆多少候选项。@LachlanB恕我直言,我应该说你的陈述与Julie Lerman在《编程实体框架:DBContext》第178页书中所说的相矛盾:“保存更改将检测关系约束问题,即使它们的定义方式不符合ValidateEntity的要求。”,我遇到过很多这样的情况:逻辑论点与微软的做法相矛盾(开发者和微软之间存在分歧!)。所以看起来合乎逻辑的东西不一定要实现。@Alireza不要那么快就责怪微软,我发现他们做任何事情都有很好的理由。