ena*_*rik 17 code-first entity-framework-4 asp.net-mvc-3
我使用EF的Code-First方法,我想使用IDbSet而不是DbSet,所以我可以使用模拟进行单元测试.我的问题是我在必要时使用Include()方法进行急切加载,但是不通过IDbSet公开Include().我看到一个示例代码使用扩展方法来公开Include(),但它似乎对我不起作用; 此示例中的objectQuery对象始终为null.请让我知道如何解决这个问题.
public static class IQueryableExtension
{
public static IQueryable<T> Include<T>(this IQueryable<T> source, string path)
where T : class
{
ObjectQuery<T> objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
return objectQuery.Include(path);
}
return source;
}
public static IQueryable<T> Include<T, TProperty>(this IQueryable<T> source,
System.Linq.Expressions.Expression<Func<T, TProperty>> path)
where T : class
{
ObjectQuery<T> objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
return source.Include(path);
}
return source;
}
}
Run Code Online (Sandbox Code Playgroud)
Lad*_*nka 28
如果您使用的是CTP5,则无需编写此类扩展.CTP5提供 Include扩展IQueryable.你必须引用EntityFramework.dll(CTP5)并添加:
using System.Data.Entity;
Run Code Online (Sandbox Code Playgroud)
您的版本可能不起作用,因为您正在将源转换为,ObjectQuery但它很可能是类型DbQuery.
| 归档时间: |
|
| 查看次数: |
5173 次 |
| 最近记录: |