2012-10-16 3 views
28

Mögliche Duplizieren:
The entity cannot be constructed in a LINQ to Entities queryDie Einheit oder komplexen Typ '' kann nicht in einer LINQ to Entities konstruiert werden Abfrage

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

gibt mir einen Fehler, wenn ich versuche, iterieren Ich würde gerne etwas Hilfe mit diesem

+4

Es ist kein Duplikat als diese Fragen nicht mein – Chazt3n

+0

von den Blicken von ihm antworten Sie versuchen, auf eine Entity zu projizieren und nicht regelmäßig/anonymen Typ - so IMO Sie sind gleich. Denken Sie daran, es sagt * möglich * duplizieren. – James

+0

10-4 danke. – Chazt3n

Antwort

71

In Linq-to-Entities können Sie nur zu einem anonymen Typ oder einer regulären Klasse projizieren. Sie können nicht auf einen vorhandenen Entitätstyp projizieren. Sie können mit Linq-to-Objekte wie so

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

Fehler Kann Typ 'TRX.CRM.Dashboard.Entities.DashBoard.Tasks' nicht mit einer Sammlung Initialisierer initialisieren, weil es 'System nicht implementiert. Collections.IEnumerable ' – Chazt3n

+0

@ Chazt3n - Ich habe eine 'ToList' am Ende hinzugefügt. Probieren Sie es aus – Aducci

+0

Die 'ToList' repariert das nicht. Sie können implizite Feldnamen nicht verwenden, wenn es sich nicht um einen anonymen Typ handelt. – jwg

Verwandte Themen