2010-05-13 6 views
0

Dans VS2008, je pense que c'est EF1.0, cela fonctionne très bien.Comment interroger Entités dans Entity Framework 4

string queryString = @"SELECT VALUE USERS FROM ProjectDBEntities.Users AS User 
      INNER JOIN ProjectDBEntities.Favorites AS F ON F.FavUserId = User.UserId 
      WHERE F.UserId = " + 3 + " ORDER BY F.CreateDate DESC "; 

     System.Data.Objects.ObjectQuery<User> usersQuery = 
       new System.Data.Objects.ObjectQuery<User>(queryString, context).Include("Detail"); 

     //int count = usersQuery.Count(); 
     foreach (User result in usersQuery) 
      Console.WriteLine("User Name: {0}", result.UserName); 

Même code dans VS2010 EF4 il se bloque sur la boucle de foreach avec l'erreur suivante:

Le type de résultat de la requête est ni un EntityType ni CollectionType avec un type d'élément d'entité. Un chemin Include peut uniquement être spécifié pour une requête avec l'un de ces types de résultats.

+0

Avez-vous besoin d'une solution ESQL? Ce serait trivial avec L2E. –

+0

Craig, comment ça se passerait avec L2E? – Picflight

+0

Selon mon message [ici] (http://social.msdn.microsoft.com/Forums/en-US/732cbb72-2ca0-45c3-8702-b30c3c077aa8/entitydatasource-issue?forum=adodotnetentityframework&prof=required) il semble que vous n'a pas besoin de spécifier 'Include' si vous utilisez déjà un' Select' personnalisé. (Essayez donc de supprimer l'inclusion). – PeterX

Répondre

2
var q = from u in ProjectDBEntities.Users 
     from f in u.Favorites 
     where f.User.Id == 3 
     orderby f.CreateDate desc; 

Je fais quelques suppositions sur vos noms de modèle entité/propriété puisque vous ne vous présentez pas, mais cela devrait vous donner l'idée générale.

Questions connexes