EF 4 Code First - 使用内部查询时出现问题
我在 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
I'm having problem using queries like this with Entity Framework 4 Code First:
var entities = context.TestEntities.Where( e => context.TestEntities2.Count() > 0)
The above query will generate the following exception:
Unable to create a constant value of
type 'TestModel.TestEntities2'. Only
primitive types ('such as Int32,
String, and Guid') are supported in
this context.
The same code works if I use the model designer and generate the POCO-classes and thus using a ObjectContext instead.
EDIT: It works in a console-application but not while using my repository in an MVC 3 project.
EDIT 2: How about this:
var userProfile = ctx.UserProfiles.Where(p => p.User.Id == user.Id).SingleOrDefault();
return ctx.Feeds.Where( f => ctx.ProfileFollowers.Count() > 0 ).ToList();
The above two lines throws the exception. Commenting out the first line solves the problem. Bug in DbContext?
//var userProfile = ctx.UserProfiles.Where(p => p.User.Id == user.Id).SingleOrDefault();
return ctx.Feeds.Where( f => ctx.ProfileFollowers.Count() > 0 ).ToList();
Posted to http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/2fb5ceea-9f30-4665-af98-945c6485f60b
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试 Any 方法:
此代码会产生 EXISTS 子句:
UPD: 对于存储库,正确的方法是执行第一个查询,然后执行第二个查询:
Try the Any method:
This code results in the EXISTS clause:
UPD: In case of repositories the correct way is to execute the first query and then the second one: