2009-10-16 8 views
2

ADO.NET Entity Framework a-t-il une structure similaire à celle de GetTable de LINQ to SQL? J'essaie de faire quelque chose de similaire dans Entity Framework, que je suis très habitué à faire dans LINQ to SQL. Est-ce que ADO.NET Entity Framework a la même capacité?Est-ce que ADO.NET Entity Framework a une construction similaire à LINT to GetTable <T> de SQL?

LINQ to SQL:

dataContext.GetTable<T>(); 

Il donnerait une collection interrogeable de type 'T'.

Dans Entity Framework, je voudrais faire la même chose:

//NOTICE: This is a partial extension of the auto-generated Entities-model 
    //  created by the designer. 
    public partial class Entities : IEntities 
    { 
     public IQueryable<T> FindAll<T>() 
     { 
     //pseudo-code 
     // return from all entities, the entities that are of type T as Queryable 
     } 
    } 

Depuis que je suis pas en mesure de comprendre cela, j'ai fait, ce que je considère, un « nauséabond » travail autour de:

//NOTICE: This is a partial extension of the auto-generated Entities-model 
    //  created by the designer. 
    public partial class Entities : IEntities 
    { 
     public IQueryable<Users> FindAllUsersQueryable 
     { 
     get { return Users; } 
     } 

     public IQueryable<Registrations> FindAllRegistrationsQueryable 
     { 
     get { return Registrations; } 
     } 

     //... and so on ... 
    } 

Ce que je veux est quelque chose de similaire à:

//NOTICE: This is a partial extension of the auto-generated Entities-model 
    //  created by the designer. 
    public partial class Entities : IEntities 
    { 
     public IQueryable<T> FindAll<T>() 
     { 
     return GetEntities<T>(); 
     } 
    } 

Mais jusqu'à présent, je ne l'ai pas été en mesure de savoir comment faire e à.

Quelle est la solution?

Répondre

0
public IQueryable<T> FindAll<T>() 
    { 
     var baseType = typeof(T); 
     return CreateQuery<T>("[" + baseType.Name.ToString() + "]").OfType<T>(); 
    } 

semble aussi faire le travail pour moi :-)

+0

D'après ce que j'ai appris aujourd'hui, l'une des principales différences entre LINQ et SQL à Entity Framework (LINQ to Entities) est le fait que vous êtes en train de coder le modèle, pas la base de données. Donc, un vrai substitut n'existe pas. Mais l'exemple ci-dessus fonctionne sûrement. – CodeMonkey

+0

Cela semble être la solution la plus correcte (pour autant que je sache). La réponse de Marc Gravell n'est certainement pas mauvaise, mais la solution est moins élégante que celle-ci. Ce que nous avons ici est simple Entity SQL. Je demande à tous les objets de type T de EF. Et il renvoie un IQueryable . – CodeMonkey

2

Marquage en tant que wiki que je ne peux pas réclamer de crédit, mais une réponse MSFT à cette question est ici: What is the equivilant of GetTable in L2E.

+0

Oui, merci. J'ai trouvé ça aussi --- Donc, il semble que c'est quelque chose qui manque encore à EF, même s'il peut être ajouté avec du code personnalisé. – CodeMonkey

+0

Vous pouvez toujours étudier la bêta 4.0? –

+0

Je vais certainement le faire, peu importe. J'ai obtenu mon FindAll travaillant avec cet exemple. Merci de me rappeler à nouveau l'exemple :-) – CodeMonkey

Questions connexes