【问题标题】:Entity Framework Code First vs DB First: Trap Relationship Constraint Problems实体框架代码优先与数据库优先:陷阱关系约束问题
【发布时间】:2013-10-01 14:28:01
【问题描述】:

两个问题:

  1. 实体框架(代码优先)是否在到达数据库之前(即在应用程序中)捕获“关系约束”问题(例如违反外键约束)。

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

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:
    1. 没有。

    2. 没有。

    对不起。

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

    【讨论】:

    • 不是真的,我以为我很清楚。您不希望 EF 在访问数据库之前验证关系约束 - 它应该始终检查数据库以确保您的数据有效,因为其他人可能已经修改了数据库中的某些数据,从而使您的保存无效甚至突然有效。它不能仅仅“知道”您的数据是否正常。
    • 知道了。谢谢。可能这只是另一个面试问题。 :) 让我们看看我现在能迷惑多少候选人。
    • @LachlanB 恕我直言,我应该说您的陈述与 Julie Lerman 在“编程实体框架:DBContext”第 178 页中所说的相矛盾:“SaveChanges 将检测关系约束问题,即使它们未在ValidateEntity 将捕获它们的一种方式。”
    • @LachlanB 到目前为止,我遇到了很多逻辑论证与微软所做的相矛盾的案例(开发人员和微软之间存在分歧!)。所以看起来合乎逻辑的东西不一定会实现。
    • @Alireza 不要这么快责怪微软,我发现大多数时候他们做任何事情都有充分的理由。
    猜你喜欢
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2017-07-05
    相关资源
    最近更新 更多