Ich möchte Daten aus der Datenbank in verschiedenen Tabellen nach Beziehung abrufen, aber ich bekomme einen Fehler, den ich nicht weiß, wie zu behandeln ist .So behandeln Sie Fehler "Methode 'First' kann nur als eine abschließende Abfrageoperation verwendet werden"
int customer_id = int.Parse(this.comboBoxnamecustomer.SelectedValue.ToString());
a = (from c in db.Invoices where c.CustomerID == customer_id select new {
customerName = c.Customer.Name,
ProductName = c.InvoiceItems
.Where(x => x.InvoiceId == c.InvoiceId)
.First().Product.ProductsName.Name
}).ToList();
Unbehandelte Ausnahme: System.NotSupportedException: Die Methode 'First' kann nur als letzte Abfrageoperation verwendet werden. Ziehen Sie in diesem Fall stattdessen die Methode 'FirstOrDefault' in Betracht.
Das Problem ist mit der .First()
Methode, aber wenn ich es entferne, kann ich nicht zu einer anderen Tabelle übergeben.
http://stackoverflow.com/questions/7811544/why-does-ef-throw-notsupportedexception-the-method -first-kann-nur-verwendet-als? rq = 1 – Eugene
Ich bin mir nicht sicher, was Ihre Datenbankstruktur ist, aber es scheint, als ob etwas logisch falsch mit Ihrer Abfrage ist. Würden c.InvoiceItems nicht schon diejenigen sein, bei denen InvoiceItem.InvoiceId = Invoice.InvoiceId? Wenn Sie diese Beziehung bereits definiert haben, scheint Ihre Verwendung von Where redundant. Möchten Sie wirklich den Produktnamen nur des ersten Artikels in jeder Rechnung, die der Kunde hat? – hatchet