2012-10-16 54 views
28

可能重复:
The entity cannot be constructed in a LINQ to Entities query实体或复杂类型'不能在LINQ构建以查询实体

var tasks = from i in data.Incidents 
        join a in data.Accounts on i.CustomerID equals a.Acct_CID 
        select new Tasks() 
        { 

         creator_id = a.ID, 
         start_date = i.DateOpened, 
         end_date = i.DateCLosed, 
         product_code = i.ProductCode, 
         install_type = i.InstallType, 
         os = i.OSType, 
         details = i.Description, 
         solution = i.Solution, 
         creator_name = i.TechID, 
         category = i.Title, 
         text = "Ticket for" + " " + i.Name, 
         status_id = 7 
        }; 

     foreach (var task in tasks) 
      data.Tasks.Add(task); 
     data.SaveChanges(); 

public class Incidents 
    { 
     [Key] 
     public int IncidentID { get; set; } 
     public string CustomerID { get; set; } 
     public string ProductCode { get; set; } 
     public string TechID { get; set; } 
     public DateTime DateOpened { get; set; } 
     public DateTime DateCLosed { get; set; } 
     public string Title { get; set; } 
     public string Description { get; set; } 
     public string Solution { get; set; } 
     public string Name { get; set; } 
     public string OSType{ get; set; } 
     public string InstallType { get; set; } 
     public string AddOnSoftware { get; set; } 
     public string ScreenShare { get; set; } 
    } 

给我一个错误,当我尝试迭代,我希望对此有所帮助

+4

这不是一个重复的那些问题并没有从它的外观您要投射到一个实体而不是常规/匿名类型回答我 – Chazt3n

+0

- 所以IMO他们是一样的。不要忘记它说*可能*重复。 – James

+0

10-4谢谢。 – Chazt3n

回答

71

在Linq-to-Entities中,您只能投影到匿名类型或常规类。您不能投影到现有的实体类型。你可以使用LINQ到对象,像这样

var tasks = (from i in data.Incidents 
      join a in data.Accounts on i.CustomerID equals a.Acct_CID 
      select new 
      { 
       creator_id = a.ID, 
       start_date = i.DateOpened, 
       end_date = i.DateCLosed 
       // ... 
      }).AsEnumerable().Select(x => new Tasks { 
       creator_id = x.creator_id, 
       start_date = x.start_date, 
       end_date = x.end_date    
      }).ToList(); 
+0

错误无法初始化类型'TRX.CRM.Dashboard.Entities.DashBoard.Tasks'与集合初始值设定项,因为它没有实现'系统。 Collections.IEnumerable' – Chazt3n

+0

@ Chazt3n - 我在最后添加了一个ToList。试一试 – Aducci

+0

'ToList'不能解决这个问题。如果它不是匿名类型,则不能使用隐含的字段名称。 – jwg

相关问题