Я использую подход Code-First с EF, и я хотел использовать IDbSet вместо DbSet, чтобы я мог выполнять Unit Testing с помощью mocks. Моя проблема заключается в том, что я использую метод 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;
}
}