Sto cercando un equivalente della DataContext.GetTable<TEntity>
in Entity Framework. Ho trovato il metodo ObjectContext.CreateQuery<T>
ma è diverso da DataContext.GetTable<TEntity>
poiché ha bisogno di una querystring per funzionare.Fa Entity Framework ha un equivalente di DataContext.GetTable <TEntity> da Linq2Sql (ObjectContext.CreateQuery <T>?)
C'è un modo per ottenere un oggetto IQueryable per una tabella utilizzando il tipo di entità senza specificare la stringa di query?
*EDIT: Added code snippet*
Questo è uno snippet di una classe di repository che ho implementato che funziona con linq2sql. Non posso usare ObjectContext.[TableName]
perché non sarebbe più generico.
public class BaseRepository<TClass> : IDisposable
where TClass : class
{
protected BaseRepository(DataContext database)
{
_database = database;
}
...
public IQueryable<TClass> GetAllEntities()
{
IQueryable<TClass> entities = _database.GetTable<TClass>();
return entities;
}
public IQueryable<TClass> GetEntities(Expression<Func<TClass, bool>> condition)
{
IQueryable<TClass> table = _database.GetTable<TClass>();
return table.Where(condition);
}
*EDIT: Added my solution (so far..)*
questo è quello che sto usando:
public IQueryable<TClass> GetEntities(Expression<Func<TClass, bool>> condition)
{
IQueryable<TClass> table = _database.CreateQuery<TClass>(typeof(TClass).Name);
return table.Where(condition);
}
Questo funziona fino a quando il nome della classe è lo stesso del nome della tabella. Questo diventerà un problema per me quando inizierò a utilizzare oggetti diversi per lo stesso tavolo.
Spero di essere stato chiaro, grazie in anticipo,
Marco :)
Marco B, hai trovato una soluzione? Ho lo stesso problema e anche passando "[EntitySet]" come parametro per CreateQuery, non riesco a farlo funzionare. –
Ho trovato prima questa risposta e [questa risposta] (http://stackoverflow.com/questions/7263083/gettable-equivalent-for-objectcontext) dopo. Sembra che la seconda risposta abbia un modo molto più semplice di fare ciò che assomiglia a 'GetTable' da Linq2SQL –