Entity Framework 4.0 с Linq - PullRequest
       7

Entity Framework 4.0 с Linq

0 голосов
/ 31 августа 2011
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" }
            }
        } 

    };
}

Можете ли вы помочь мне исправить запрос Linq для этого?

Мне нужно взять значение из базы данных, используя Entity Framework 4.
Мне так понравилось

         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();
                       }

получаю ошибку вроде:

Сущность или сложный тип 'CGWeb.Models.Repositories.Comment' не могут быть созданы в запросе LINQ to Entities.

Пожалуйста, скажите мне, где моя ошибка, которую я сделал

Ответы [ 3 ]

2 голосов
/ 31 августа 2011

u.Location должно быть Location.

2 голосов
/ 31 августа 2011
                   select new Comment
                   {
                       u.Location //<- remove the u.
0 голосов
/ 31 августа 2011

Попробуйте это

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();
...