在 MVC 的 EDM 中使用外键会减慢执行速度吗?

Does use of foreign key in EDM of MVC slowers execution?

If EDM for 3 Tables is as shown in figer given below.

然后,

  1. 在 EDM 和数据库中使用这样的外键是好方法吗?
  2. 这样的数据库设计会降低执行速度吗?
  3. 哪种架构更适合使用外键或 不使用外键 ?

如果有人想要来自 table-3 的数据来自 TAble-1

那么可以通过两种方式完成。

我。

db.TAble_1.FirstOrDefault(m => m.TAble_1ID == 2).Table_2.FirstOrDefault().TAble_3;

二.

By Join in LINQ

  1. 那么哪个更快?

如果有人想要来自 table-1 的数据来自 TAble-3

那么可以通过两种方式完成。

我。

db.TAble_1.FirstOrDefault(m => m.TAble_3ID == 2).Table_2.TAble_3;

二.

By Join in LINQ

  1. 那么哪个更快?

提前谢谢大家。

不,基本上什么是 EDM 或者让我们以 Linq 为例 Sql,它只是将您的对象查询转换为 SQL,然后它会像内联一样触发查询 ,使用 SqlConnection 对象。

这个问题有两层:

  1. 数据库设计合理吗? - 因为这实际上会对性能产生影响。设计是查询的核心,它的精炼可以解决你的大部分性能问题。
  2. EDMX、Linq To Sql、Entity Framework 或其他一些 ORM(对象关系映射器):通常为什么要使用 ORM?由于他们有小查询并且他们对 SQL 服务器不是很精通,或者他们希望开发人员的学习曲线相对较钝,并且需要轻松且快速地纠正简单的小查询(有简单 Select 的存储过程没有意义。)因此它通过将对象查询 (LINQ) 转换为 Sql 语句来解决您的问题。

您的案例答案: 这取决于您对哪些查询使用相同的查询,您声明的查询如果有连接则不会有什么不同,(考虑到您的设计是正确的。)EDM 或上述任何内容都适用于任何此类查询,

但是是的,不要将它用于 "TOO BIG QUERIES" 或者不要用它替换 Stored Procedures 因为它会转换你的对象查询到 SQL 语句,将其发送到数据库服务器,Sql 服务器引擎解析查询,然后执行;因此,如果查询太大,那么在这种情况下,网络延迟、查询编译(&因为查询只是被编译,它不会编译执行计划。)而在存储过程的情况下,它已经存在并且查询 运行 相当快

有用的链接:

Execution Plan