EF ile Code-First yaklaşımını kullanıyorum ve IDbSet'i DbSet yerine kullanmak istedim, böylece Birim Testleri alay ile yapabildim. Benim sorunum gereken yerde istekli yükleme için Include() yöntemini kullanıyorum ama Include() IDbSet üzerinden açık değil. Include() öğesini göstermek için bir uzantı yöntemi kullanarak örnek bir kod gördüm, ancak benim için çalışmıyor gibi görünüyor; Bu örnekteki objectQuery nesnesi her zaman boştur. Lütfen bunu nasıl düzelteceğimi bildirin.IDbSet ve Exposing Yöntemini Uzatma Metoduyla ekle
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;
}
}
İlk başta ne söylediğini anlamadım. Ama sonra ben sadece benim DbContext (session.cs) oluşturduğunuz dosyada değil, Include() kullanmak için linq ifademi (services class) yazdığım dosya üzerinde kullanma ifadesine sahip olduğumu fark ettim. Teşekkür ederim!!! – enamrik
alas, birim test edilebilir EF için arayış hedefine ulaştı. TEŞEKKÜRLER. –