2011-04-05 40 views
2

我試圖使用實體框架的結果初始化列表。這是錯誤:初始化列表<T>使用具有外鍵的EntityCollection

LINQ to Entities無法識別方法'System.Collections.Generic.List 1[Domain.Entities.Person] ToList[Person](System.Collections.Generic.IEnumerable 1 [Domain.Entities.Person])''方法,並且此方法無法轉換爲存儲表達式。

public List<Domain.Entities.Event> Events 
     { 
      get 
      { 
       Entities context = new Entities(connectionString); 

       return (from c in context.Events.Include("EventPeople") 
         select new Domain.Entities.Event() 
         { 
          ID = c.ID, 
          Title = c.Title, 
          Description = c.Description, 
          Date = c.Date, 
          People = (from ep in c.EventPeople 
            select new Domain.Entities.Person() 
            { 
             ID = ep.ID, 
             Name = ep.Name 
            }).ToList<Person>() 
         }).ToList<Domain.Entities.Event>(); 
      } 
     } 

回答

3

您需要執行第一,並返回一個IEnumerable然後用LINQ到對象創建一個列表

var events = (from c in context.Events.Include("EventPeople") 
        select new 
        { 
         ID = c.ID, 
         Title = c.Title, 
         Description = c.Description, 
         Date = c.Date, 
         People = (from ep in c.EventPeople 
           select new Domain.Entities.Person() 
           { 
            ID = ep.ID, 
            Name = ep.Name 
           }) 
        }).ToList(); 
return events.Select(e => new Domain.Entities.Event() 
        { 
         ID = e.ID, 
         Title = e.Title, 
         Description = e.Description, 
         Date = e.Date, 
         People = e.People.ToList() 
        }).ToList();