我正在使用数据库优先的ASP.NET MVC应用程序.查看数据库外键非常不一致,基本上只有在创建表的sql脚本中指定了它们.在大多数情况下,他们不在那里.
然而,在edmx模型中,我可以看到它知道外键,即它已经正确地识别了导航属性.
我的问题是,实际数据库中缺少的外键是否对Entity Framework发出的sql有影响?我的意思是对业绩的负面影响.
我真的不明白是否重要.
解决方法
Negative impact on performance.
我可以想到外键存在的两个效果.
> A tiny negative impact on inserts and updates,因为钥匙必须被检查.然而,与一个完整的数据库往返中发生的一切相比,这个效果完全可以忽略不计.绝对没有理由不使用它们.它永远不会超过数据完整性的好处.
>当外键设置有级联删除和更新时,性能提升是巨大的.
总之,没有理由故意省略外键.
当然,遗产在一夜之间不能总是被撤回.如果数据库模式有任何变化的空间,我会去做.如果没有,您可以考虑在edmx模型中手动添加公共关联.通过从数据库更新模型,不会擦除这些关联.