Chcę pobrać dane z bazy danych w różnych tabelach według relacji, ale pojawia się błąd, którego nie wiem, jak obsługiwać .Jak radzić sobie z błędami "metoda" Pierwsza "może być użyta tylko jako operacja zapytania końcowego"
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();
Nieobsłużone Wyjątek System.NotSupportedException: metoda „pierwszej” może być używane tylko w końcowej operacji zapytania. Zamiast tego należy użyć metody "FirstOrDefault" w tym wystąpieniu.
Problem dotyczy metody .First()
, ale jeśli ją usunę, nie mogę przejść do innej tabeli.
http://stackoverflow.com/questions/7811544/why-does-ef-throw-notsupportedexception-the-method -first-can-only-be-used-as? rq = 1 – Eugene
Nie jestem pewien jaka jest twoja struktura bazy danych, ale wydaje się, że jest coś logicznie nie tak z twoim zapytaniem. Czy c.InvoiceItems nie byłyby już tylko tymi, w których InvoiceItem.InvoiceId = Invoice.InvoiceId? Jeśli już zdefiniowałeś ten związek, korzystanie z tego miejsca wydaje się zbędne. Czy naprawdę chcesz również nazwy produktu tylko pierwszego elementu na każdej fakturze, którą posiada klient? – hatchet