当前位置: 首页 > 面试题库 >

使用Include时防止实体框架添加ORDER BY

岑光熙
2023-03-14
问题内容

我们有一个类似于以下内容的查询:

from x in db.Table.Include(x => x.Parent)
                  .Include(x => x.Parent.Relation)
                  .Include(x => x.Relation)
                  .Include(x => x.Children)
where /* some query */
select x

问题在于,在添加时.Include(x => x.Children)ORDER BY实体框架添加到生成的SQL的语句会使查询花费很长时间才能执行-
类似于以下内容:

ORDER BY [Project2].[Id1] ASC, [Project2].[Id2] ASC, [Project2].[Id] ASC, [Project2].[C4] ASC

向linq查询中添加orderby也无济于事,除了添加其他列作为排序依据之外,它不会影响上面的语句。


问题答案:

显然,这是EF在内部做的事情,以简化事后创建对象的过程。您无法删除order by说明。



 类似资料:
  • 实体框架5.0首先使用现有数据库编写代码。使用电动工具对类进行逆向工程。一切都很好。数据库有两个表。一个父母和一个孩子的外键返回到父母ID。ID都是带有自动增量的int。我添加了许多父母记录,现在想将孩子记录添加到特定的父母。我能看到的唯一方法是通过在父母表中搜索名称或其他属性并返回ID来找到适当的父母ID。然后在添加孩子时在外键属性中使用该ID。我不想设置新父母,所以这是将孩子添加到现有父母的唯

  • 我目前正在使用实体框架来建立一个论坛使用ASP。NET MVC I有3个主要模型[类别]1--*[论坛]1--*[帖子] 如果我有5个类别,每个类别有4个论坛,每个论坛有1000个帖子,我只想显示类别,当我这样做的时候,这意味着我也选择了20000个帖子?? 因为每个类别对象都有一个列表

  • 问题内容: 基本上我想 从主应用程序上的按钮进行调用。我用这个 当 我出现并关闭它时,/ 也关闭。我尝试添加,但也无法正常工作。如何获得? 任何帮助,将不胜感激。 问题答案: 改变如下。 如果添加false,则close属性的默认出口变为false。

  • 我正在尝试编写一个Updatestatus方法,该方法仅在我保存对数据库的更改时更新实体的状态字段。如果实体中的任何其他字段发生了变化,我不想将这些更改保存到数据库中。对于实体自己的字段来说,这很简单,使用: 但是,我发现,如果相关实体没有键值集,则将插入通过我设置状态的实体的导航属性可访问的任何相关实体。因此,如果将新的子实体添加到实体中。子项,并且子实体ChildId属性为0,则该子项将插入到

  • 我正在使用EF Core(v1.1.3)和C#。 在我的单元测试中,我使用代码优先db模型创建了一个sqlite内存数据库,然后用一些测试数据填充它。但是,当从dB加载实体列表时,相关实体会被填充,尽管没有使用“。包含”。 如果我使用相同的模型来创建一个实际的磁盘数据库,并进行相同的加载,那么只有在使用<代码>时,才会加载相关的实体。包括。 这是sqlite内存实现(v1.1.0)中的错误,还是我

  • 考虑以下(非常简化的)实体: 在我的映射器中,我可以设置用户罚款,但是一旦执行以下代码(在数据库中保留任何更改之前)