【发布时间】:2011-02-10 05:18:24
【问题描述】:
我在 EF 中使用 Code-First 方法,并且我想使用 IDbSet 而不是 DbSet,因此我可以使用 mock 进行单元测试。我的问题是我在必要时使用 Include() 方法进行预加载,但 Include() 没有通过 IDbSet 公开。我看到了一个使用扩展方法来公开 Include() 的示例代码,但它似乎对我不起作用;此示例中的 objectQuery 对象始终为空。请告诉我如何解决此问题。
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;
}
}
【问题讨论】:
标签: entity-framework-4 asp.net-mvc-3 code-first