Entity Framework LINQ -Projektionsfehler: "Entitätsinstanz kann nicht erstellen"
Bei der Verwendung von LINQ zu Entitäten (linq-to-ent-te-stellschaften) mit Entity-Framework ist es entscheidend, spezifische Projektionsregeln zu befolgen. Ein häufiger Fehler tritt beim Versuch auf, neue Entitätsinstanzen direkt in einer LINQ -Abfrage zu erstellen.
Betrachten Sie dieses Szenario: Eine Abfrage, mit der nur die Name
Eigenschaft aus der Tabelle Product
ausgewählt wurde, löst einen Fehler "Entität kann nicht erstellen" aus, wenn sie versucht, in eine Product
Entität zu projizieren.
Das Kernproblem ist, dass es ist nicht zulässig, direkt auf eine kartierte Entität zu projizieren (wie Product
). Die Lösung besteht
Verwenden anonymer Typen zur Projektion:
public IQueryable<object> GetProducts(int categoryID) { return from p in db.Products where p.CategoryID == categoryID select new { Name = p.Name }; }
Eigenschaft zu halten. Name
Verwenden von DTOs zur Projektion:
public class ProductDTO { public string Name { get; set; } // Add other properties as needed from the Product entity } public IQueryable<ProductDTO> GetProducts(int categoryID) { return from p in db.Products where p.CategoryID == categoryID select new ProductDTO { Name = p.Name }; }
-Klasse eine strukturierte Möglichkeit, die projizierten Daten zu erhalten. Dies wird im Allgemeinen für eine bessere Sicherheit und Wartbarkeit des Typs bevorzugt. ProductDTO
Das obige ist der detaillierte Inhalt vonWarum wirft Linq zu Entitäten während der Projektion einen Fehler 'Nicht konstruieren' -Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!