Frameworks EF 4代码优先-使用内部查询时出现问题

Frameworks EF 4代码优先-使用内部查询时出现问题,frameworks,entity-framework-4,entity,code-first,Frameworks,Entity Framework 4,Entity,Code First,我在使用Entity Framework 4代码时遇到了以下问题: var entities = context.TestEntities.Where( e => context.TestEntities2.Count() > 0) 上述查询将生成以下异常: 无法创建的常量值 键入“TestModel.TestEntities2”。只有 “基本类型”,如Int32, 中支持字符串和Guid 这个背景 如果我使用模型设计器并生成POCO类,从而使用ObjectContext,那么同样

我在使用Entity Framework 4代码时遇到了以下问题:

var entities = context.TestEntities.Where( e => context.TestEntities2.Count() > 0)
上述查询将生成以下异常:

无法创建的常量值 键入“TestModel.TestEntities2”。只有 “基本类型”,如Int32, 中支持字符串和Guid 这个背景

如果我使用模型设计器并生成POCO类,从而使用ObjectContext,那么同样的代码也可以工作

编辑:它在控制台应用程序中工作,但在MVC3项目中使用my repository时不起作用

编辑2:这个怎么样:

var userProfile = ctx.UserProfiles.Where(p => p.User.Id == user.Id).SingleOrDefault();
return ctx.Feeds.Where( f => ctx.ProfileFollowers.Count() > 0 ).ToList();
上面两行抛出异常。注释掉第一行可以解决问题。DbContext中的Bug

//var userProfile = ctx.UserProfiles.Where(p => p.User.Id == user.Id).SingleOrDefault();
return ctx.Feeds.Where( f => ctx.ProfileFollowers.Count() > 0 ).ToList();
发布到

尝试任何方法:

var q = context.TestEntities.Where(a=>context.TestEntities2.Any());  
此代码导致EXISTS子句:

SELECT 
[Extent1].[ProductID] AS [ProductID], 
...
FROM [dbo].[Products] AS [Extent1]
WHERE  EXISTS (SELECT 
1 AS [C1]
FROM [dbo].[Regions] AS [Extent2]
UPD:对于存储库,正确的方法是执行第一个查询,然后执行第二个查询:

if(context.TestEntities2.Count() > 0)  
  var q = context.TestEntities.Select(t=>t);
请尝试任何方法:

var q = context.TestEntities.Where(a=>context.TestEntities2.Any());  
此代码导致EXISTS子句:

SELECT 
[Extent1].[ProductID] AS [ProductID], 
...
FROM [dbo].[Products] AS [Extent1]
WHERE  EXISTS (SELECT 
1 AS [C1]
FROM [dbo].[Regions] AS [Extent2]
UPD:对于存储库,正确的方法是执行第一个查询,然后执行第二个查询:

if(context.TestEntities2.Count() > 0)  
  var q = context.TestEntities.Select(t=>t);

这个查询应该做什么?where扩展不包含实体和条件之间的任何关系。如果数据存储中有一个或多个TestEntities 2(在本例中为MSSQL 2k8),则它应返回所有TestEntities。TSSQL:SELECT*fromtestentities其中SELECT COUNT*fromtestentities2>0实际查询显然更复杂,但这是我能想到的最小的测试用例。这个查询应该做什么?where扩展不包含实体和条件之间的任何关系。如果数据存储中有一个或多个TestEntities 2(在本例中为MSSQL 2k8),则它应返回所有TestEntities。TSSQL:SELECT*fromtestentities其中SELECT COUNT*fromtestentities2>0实际查询显然更复杂,但这是我能想到的最小测试用例。任何方法都会出现相同的异常。但它比这更复杂。这似乎是DbContext中的一个bug,尽管我显然不确定。这是随机发生的。如果使用存储库,为什么要拆分查询?存储库直接使用DbContext。一切都取决于您的体系结构。任何方法都会引发相同的异常。但它比这更复杂。这似乎是DbContext中的一个bug,尽管我显然不确定。这是随机发生的。如果使用存储库,为什么要拆分查询?存储库直接使用DbContext。一切都取决于您的体系结构。