Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC slowers执行的EDM中是否使用外键?_C#_Asp.net Mvc_Linq_Edmx_Ado.net Entity Data Model - Fatal编程技术网

C# 在MVC slowers执行的EDM中是否使用外键?

C# 在MVC slowers执行的EDM中是否使用外键?,c#,asp.net-mvc,linq,edmx,ado.net-entity-data-model,C#,Asp.net Mvc,Linq,Edmx,Ado.net Entity Data Model,如果3个表的EDM如下图所示 那么 在EDM和DB中使用这些外键是一种好方法吗 这样的数据库设计能降低执行速度吗 使用外键或 不使用外键 如果任何人想要表1 id中的表3数据 然后可以通过两种方式完成 一, db.TAble_1.FirstOrDefault(m=>m.TAble_1ID==2).TAble_2.FirstOrDefault().TAble_3 二, 加入LINQ 那么哪一个更快呢 如果任何人想要表3 id中的表1数据 然后可以通过两种方式完成 一, db.TAble_1.Fi

如果3个表的EDM如下图所示

那么

  • 在EDM和DB中使用这些外键是一种好方法吗
  • 这样的数据库设计能降低执行速度吗
  • 使用外键或 不使用外键
  • 如果任何人想要表1 id中的表3数据

    然后可以通过两种方式完成

    一,

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

    二,

    加入LINQ

  • 那么哪一个更快呢
  • 如果任何人想要表3 id中的表1数据

    然后可以通过两种方式完成

    一,

    db.TAble_1.FirstOrDefault(m=>m.TAble_3ID==2.TAble_2.TAble_3

    二,

    加入LINQ

  • 那么哪一个更快呢

  • 提前感谢大家。

    不,基本上什么是EDM或者让我们以Linq到Sql为例,它只是将对象查询转换为Sql,然后使用SqlConnection对象触发与内联查询相同的查询

    这个问题有两个方面:

  • 数据库设计正确吗因为这实际上会对性能产生影响。设计是查询的核心,它的优化可以解决大多数性能问题
  • EDMX、LINQtoSQL、实体框架或其他一些ORM(对象关系映射器):通常情况下,为什么要使用ORM?因为他们有小查询,并且对SQL Server不是很精通,或者他们希望开发人员的学习曲线比较平缓,并且需要轻松快速地纠正简单的小查询(为简单的选择使用存储过程是没有意义的)因此,它通过将对象查询(LINQ)转换为Sql语句来解决您的问题
  • 就你的情况回答: 这取决于您使用相同的查询、您声明的查询(考虑到您的设计是正确的)、EDM或上述任何查询都适用于任何此类查询

    但是,是的,不要将其用于“太大的查询”或用它替换存储过程,因为它会将对象查询转换为SQL语句,发送到DB服务器,SQL Server引擎解析查询,然后执行;因此,如果查询太大,那么在这种情况下,网络延迟、查询编译(因为查询刚刚被编译,所以它不会编译执行计划。)而对于存储过程,它已经存在,并且查询运行得相当快

    有用链接:


    您可能会更幸运地在上问这个问题。这个问题是关于asp.net MVC的LINQ和EDM的,这就是为什么我在这里问这个问题。通过测量它可以回答“哪个更快”。以一种方式运行,然后以另一种方式运行,计算时间并比较结果。通常情况下,这无助于命名表1和表2等。这不是一种好的做法,也不允许这里的人对数据的使用方式进行任何推断,这在设计数据结构时非常重要。