C# Linq到实体-什么';这是从实体中确定实体集数量的最佳方法

C# Linq到实体-什么';这是从实体中确定实体集数量的最佳方法,c#,linq-to-entities,C#,Linq To Entities,我返回了一个与bizlogic分离的实体 现在我想检查多对多关系中有多少EntitySet 目前,我的代码如下所示: context.Attach(entity); entity.entityset.Load(); int count entity.entityset.count(); 这个简单的例子还有很多,但现在我只想知道如何以最有效的方式提取EntitySet的数量。上面的示例给我的印象是,在确定记录数之前,我正在加载整个entityset记录列表,除非我误解了Linq to Entit

我返回了一个与bizlogic分离的实体

现在我想检查多对多关系中有多少EntitySet

目前,我的代码如下所示:

context.Attach(entity);
entity.entityset.Load();
int count entity.entityset.count();

这个简单的例子还有很多,但现在我只想知道如何以最有效的方式提取EntitySet的数量。上面的示例给我的印象是,在确定记录数之前,我正在加载整个entityset记录列表,除非我误解了Linq to Entity的基本原理。(我不熟悉这一点,也不熟悉网络层)

如果可以直接使用导航属性,则应将
Count()
转换为以下SQL:

SELECT COUNT(*) AS [value]
FROM [entityset] AS [t0]
我不确定,但我也有这样的印象,
Load()
将首先将整个集合加载到内存中。所以尽量不要这样做:)


编辑:,因为它们正在重新附着实体,然后尝试使导航属性正常工作。它可能是适用的。

我已经尝试不惜一切代价避免负载,但没有其他方法可以解决这个问题。抱歉,不确定导航属性是什么意思,是entity.entityset(entityset是导航属性)吗?需要先加载它才能工作,否则总是零计数。(对Linq to Entities来说还是新的)@Rob:Yep,那是导航属性。您可以这样重写查询吗
context.EntitySet.Where(es=>es.EntityId==entity.Id).Count()
?您也可以尝试将此问题的答案应用于您的问题:不确定5472254是否有用,抱歉。我看不到context.EntitySet?我只看到context.Entity和context.Entity.EntitySet。@Rob:我给你的查询不是来自那个链接,而是一个单独的选项。尽管这很奇怪——所有实体都应该在集合中直接从上下文可见,除非您有一个“复杂类型”本身没有映射到模型中的实体,在这种情况下,您可以将其映射为实体。至于我链接的问题,我想的是
context.CreateObject()
,添加适当的键属性,然后查询
entity.EntitySet
。或者简单地重新查询:
context.Entities.Single(e=>e.Id==entity.Id).EntitySet.Count()
。我使用了从数据库更新到edmx的默认方法!?:)(仍在学习)我明白你的意思,听起来不错。稍后将尝试此操作并让您知道。没有想到“context.Entities.Single(e=>e.Id==entity.Id).EntitySet.Count()”。在将其应用于代码之前,我需要理解“context.CreateObject();”。谢谢你的帮助。