【问题标题】:Do missing foreign keys in the database have an effect on sql generated by EF?数据库中缺少外键对EF生成的sql有影响吗?
【发布时间】:2016-03-18 11:43:31
【问题描述】:

我正在开发一个数据库优先的 ASP.NET MVC 应用程序。查看数据库,外键非常不一致,基本上它们只有在创建表的 SQL 脚本中指定时才存在。在大多数情况下,它们不存在。

但是,查看 edmx 模型,我可以看到它知道外键,即它已正确识别导航属性。

我的问题是,实际数据库中缺少的外键对实体框架生成的sql有影响吗?效果是指对性能的负面影响。

我真的不知道这是否重要。

澄清一下,我在数据库中展开表并寻找表示外键的红色键。我也在查看子文件夹:“Keys”。

【问题讨论】:

  • 你使用的是哪个 EF 版本?

标签: sql-server database entity-framework foreign-keys


【解决方案1】:

对性能的负面影响。

我可以想到存在外键的两种效果。

  1. tiny negative impact on inserts and updates,因为必须检查密钥。然而,与在一个完整的数据库往返中发生的所有其他事情相比,这种影响完全可以忽略不计。绝对没有理由不使用它们。它永远不会超过数据完整性的好处。
  2. 通过级联删除和更新设置外键时,性能获得巨大提升。

简而言之,没有理由故意省略外键。

当然,遗产不能一蹴而就。如果数据库模式有任何更改空间,我会去的。如果没有,您可以考虑在 edmx 模型中手动添加常用关联。从数据库中更新模型不会删除这些关联。

【讨论】:

    【解决方案2】:

    是的,您需要这些外键。
    我不知道实体框架,但我知道一些 SQL Server。
    如果您有外键,您可以获得更好的执行计划。
    Kendra Little 有一个关于外键的精彩视频here

    您还需要确保他们是活跃且受信任的。 Brent Ozar 写了关于 here 的文章。

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多