首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntitySet查询

EntitySet查询
EN

Stack Overflow用户
提问于 2009-10-14 20:38:49
回答 1查看 1.3K关注 0票数 0

我正在尝试运行一个类似于

代码语言:javascript
复制
var results = MyItem.MyEntitySet.Where( x => x.PropertyB == 0 )

MyEntitySet与MyItem有一个关联,即PropertyA。

理想情况下,底层SQL查询应该是

代码语言:javascript
复制
SELECT .. FROM .. WHERE ([t0].[PropertyA] = @p0) AND ([t0].[PropertyB ] = @p1)

因为PropertyA和PropertyB是我要查询的表的两个主键。

但我的跟踪似乎表明,程序首先使用PropertyA查询返回MyEntitySet,然后使用PropertyB查询返回var results

有没有什么办法可以强制Linq在一条SQL语句中使用这两个条件进行查询?

EN

回答 1

Stack Overflow用户

发布于 2009-10-14 20:56:19

可能会,也可能不会。生成的SQL确实与编写LINQ查询的方式相匹配,因此生成的SQL并不令人惊讶。如果从"MyEntitySet“表示的实体开始,那么生成的SQL可能会发生变化。

目前还不清楚你使用的是LINQ to SQL还是Entity Framework。LINQ to SQL确实将一对多关系表示为“实体集”,而实体框架将关系视为一级对象,因此一对多关系是一组具有相关实体的关系对象,而不是简单的实体集。它确实会影响生成的SQL。

另外两个想法..。

如果您想要对生成的SQL进行如此多的控制,那么您可能对LINQ不满意。它并不总是生成最优的SQL (尽管它有时会让您感到惊讶)。另一方面,LINQ的主要好处之一是您可以开始编写代码来表达数据中的真实关系。传统ADO.NET的缺点在于,您编写了关于操作SQL以及处理DataSet和DataTable集合的代码。LINQ是非常干净、更安全、更健壮、更易于维护的代码。每件事都是一种权衡。

其次,查询生成可能会随着时间的推移而变得更好(特别是在实体框架中)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1568847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档