我在使用Entity Framework 4 Code First:
时使用此类查询时遇到问题var entities = context.TestEntities.Where( e => context.TestEntities2.Count() > 0)
上述查询将生成以下异常:
无法创建常量值 输入'TestModel.TestEntities2'。只要 原始类型('如Int32, 支持String和Guid') 这个背景。
如果我使用模型设计器并生成POCO类并因此使用ObjectContext,则相同的代码可以工作。
编辑:它在控制台应用程序中运行,但在MVC 3项目中使用我的存储库时却不行。
编辑2:这个怎么样:
var userProfile = ctx.UserProfiles.Where(p => p.User.Id == user.Id).SingleOrDefault();
return ctx.Feeds.Where( f => ctx.ProfileFollowers.Count() > 0 ).ToList();
以上两行抛出异常。评论第一行解决了这个问题。 DbContext中的错误?
//var userProfile = ctx.UserProfiles.Where(p => p.User.Id == user.Id).SingleOrDefault();
return ctx.Feeds.Where( f => ctx.ProfileFollowers.Count() > 0 ).ToList();
发布到http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/2fb5ceea-9f30-4665-af98-945c6485f60b
答案 0 :(得分:1)
尝试Any方法:
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);