jdi*_*iaz 23 linq-to-entities entity-framework-4
我在MVC3应用程序中使用EF4,我正在寻找一种方法来查看给定工作组中的所有联系人.在我指定的控制器中:
var wg = from w in _repo.Workgroups.Include("Contact").ToList();
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
'System.Linq.IQueryable'不包含'Include'的定义,也没有扩展方法'Include'接受类型为'System.Linq.IQueryable'的第一个参数'(你是否缺少using指令或程序集引用) ?)
我虽然这种方法是内置于EF4中的.我是以某种方式启用它吗?
Bru*_*ill 84
我也收到了这个错误并通过添加以下引用解决了它:
using System.Data.Entity;
Run Code Online (Sandbox Code Playgroud)
Lad*_*nka 15
是的,该方法是构建到EF中,但在IQueryable界面上不可用.它可用ObjectQuery.如果您想要调用它,IQueryable您必须创建自己的扩展名,将当前查询转换为ObjectQuery并执行Include.就像是:
public static IQueryable<T> Include<T>(this IQueryable<T> query, string property)
{
var objectQuery = query as ObjectQuery<T>;
if (objectQuery == null)
{
throw new NotSupportedException("Include can be called only on ObjectQuery");
}
return objectQuery.Include(property);
}
Run Code Online (Sandbox Code Playgroud)
或者您必须使用实体框架功能CTP5,此类扩展已经可用.
小智 10
布鲁斯希尔的回答是绝对正确的.
为了扩展他的答案,Include方法是System.Data.Entity命名空间中的扩展方法.
它不会影响您如何使用它们,但Include方法实际上是在名为DbExtensions的静态类中定义的.在msdn.microsoft.com,你会看到他们记录都在这里,不System.Linq.IQueryable下,使他们只是有点难找.
| 归档时间: |
|
| 查看次数: |
15944 次 |
| 最近记录: |