2011-08-31 6 views
0
public IEnumerable<Models.Comment> GetUserComments() 
{ 
    return List<Comment> 
    { 
     new Comment 
     { 
      CommentFor = "ee", 
      DateAdded = DateTime.Now, 
      CommentText = "aaaa", 
      Location = new Location 
      { 
       Name = "Location Name", 
       Country = new Country 
       { 
        Name="Israel" 
       }, 
       State=new State { Name="TelAviv" } 
      } 
     } 

    }; 
} 

Pouvez-vous m'aider à corriger la requête Linq pour cela?Entity Framework 4.0 avec Linq

Je dois prendre la valeur de base de données en utilisant Entity Framework 4.
Je l'ai fait comme ça

  public IEnumerable<Models.Comment> GetUserComments() 
    { 
     var comment = (from u in context.Comments 
         where u.UserID == userId 
         select new Comment 
         { 
          //Location = context.Locations.FirstOrDefault(x => x.locationid == u.LocationID).name, 
          Location = (from l in context.Locations 
             where l.LocationID == u.LocationID 
             select new Location 
             { 
              Name = l.Name, 
              State = (
               from s in context.States 
               where (s.StateID == l.StateID) 
               select new State { Name = s.Name } 
               ).FirstOrDefault() 

             } 
             ).FirstOrDefault(), 
          CommentFor = "bs", 
          DateAdded = u.DateAdded, 
          CommentText = u.CommentText 
         } 
        ).ToList(); 
         } 

obtenir erreur comme:

Le type d'entité ou complexe « de CGWeb.Models.Repositories "Commentaire" ne peut pas être construit dans une requête LINQ to Entities.

S'il vous plaît me dire où mon erreur je l'avais fait

+0

Et s'il vous plaît prendre un certain temps pour formater correctement votre code (voir ma mise à jour). – Steven

Répondre

2

u.Location devrait être Location.

+0

J'ai fait comme ça ..que ce problème résolu maintenant. Merci pour la relecture rapide .. mais encore d'autres problèmes. comme ceci: L'entité ou le type complexe 'CGWeb.Models.Repositories.Comment' ne peut pas être construit dans une requête LINQ to Entities. – Justinonday

2
    select new Comment 
        { 
         u.Location //<- remove the u. 
+0

ok. c'est un problème .qui a été résolu maintenant ... mais maintenant l'erreur est similaire. L'entité ou le type complexe 'CGWeb.Models.Repositories.Comment' ne peut pas être construit dans une requête LINQ to Entities. – Justinonday

+1

Si "Commentaire" est une entité de votre modèle, vous aurez ce problème. vous devez utiliser des types anonymes ou des types non mappés dans vos projections. –

+0

ok .. pouvez-vous préciser ce que vous entendez par "types anonymes" ..Il quelle solution nécessaire ..? S'il vous plaît partager – Justinonday

0

Essayez cette

var comment = (from u in context.Comments 
          where u.UserID == userId 
          select new Comment 
          { 
           Location = context.Locations.FirstOrDefault(x=>x.LocationID==u.LocationID).Name,           
           CommentFor = "Bb", 
           DateAdded = u.DateAdded, 
           CommentText = u.CommentText 
          } 
         ).ToList(); 
+0

monsieur je reçois une nouvelle erreur. S'il vous plaît examiner ma question – Justinonday

Questions connexes