Je suis à la recherche d'un équivalent du DataContext.GetTable<TEntity>
dans Entity Framework. J'ai trouvé la méthode ObjectContext.CreateQuery<T>
mais elle est différente de DataContext.GetTable<TEntity>
puisqu'elle a besoin d'une chaîne de requête pour fonctionner.Entity Framework ont un équivalent de DataContext.GetTable <TEntity> de Linq2Sql (ObjectContext.CreateQuery <T>?)
Existe-t-il un moyen d'obtenir un objet IQueryable pour une table en utilisant le type d'entité sans spécifier la chaîne de requête?
*EDIT: Added code snippet*
Ceci est un extrait d'une classe Repository que j'ai implémentée qui fonctionne avec linq2sql. Je ne peux pas utiliser ObjectContext.[TableName]
car ce ne serait plus générique.
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..)*
C'est ce que j'utilise:
public IQueryable<TClass> GetEntities(Expression<Func<TClass, bool>> condition)
{
IQueryable<TClass> table = _database.CreateQuery<TClass>(typeof(TClass).Name);
return table.Where(condition);
}
Cela fonctionne aussi longtemps que le nom de classe est le même du nom de la table. Cela deviendra un problème pour moi lorsque je commencerai à utiliser différents objets pour la même table.
J'espère que je suis clair, merci à l'avance,
Marco :)
Marco B, avez-vous trouvé une solution? J'ai le même problème et même en passant "[EntitySet]" en tant que paramètre à CreateQuery je ne peux pas le faire fonctionner. –
J'ai d'abord trouvé cette réponse, et [cette réponse] (http://stackoverflow.com/questions/7263083/gettable-equivalent-for-objectcontext) après cela. Il semble que la deuxième réponse a une façon beaucoup plus facile de faire cela qui ressemble 'GetTable' de Linq2SQL –