Sto utilizzando l'approccio Code-First con EF e volevo utilizzare IDbSet invece di DbSet in modo da poter eseguire il test delle unità con i mock. Il mio problema è che io uso il metodo Include() per il caricamento ansioso, se necessario, ma Include() non è esposto tramite IDbSet. Ho visto un codice di esempio utilizzando un metodo di estensione per mostrare Include() ma non sembra funzionare per me; l'oggetto objectQuery in questo esempio è sempre nullo. Per favore fatemi sapere come risolvere questo problema.IDbSet ed Exposing Include metodo tramite Extension Method
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;
}
}
All'inizio non ho capito quello che stavi dicendo. Ma poi mi sono reso conto che avevo bisogno di avere l'istruzione using sul file in cui stavo scrivendo la mia istruzione linq (classe services) per usare Include(), non solo sul file che ho creato il mio DbContext (session.cs). Grazie!!! – enamrik
ahimè, la ricerca dell'unità EF verificabile ha raggiunto il suo obiettivo. GRAZIE. –