Tôi muốn lấy dữ liệu từ cơ sở dữ liệu trong các bảng khác nhau theo quan hệ, nhưng tôi nhận được một lỗi mà tôi không biết làm thế nào để xử lý .Làm thế nào để xử lý lỗi "phương pháp 'Đầu tiên' chỉ có thể được sử dụng như một hoạt động truy vấn cuối cùng"
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();
Unhandled Exception: System.NotSupportedException: Phương pháp 'đầu tiên' chỉ có thể được sử dụng như một hoạt động truy vấn chính thức. Hãy xem xét sử dụng phương pháp 'FirstOrDefault' trong trường hợp này thay thế.
Vấn đề là với phương pháp .First()
, nhưng nếu tôi xóa, tôi không thể chuyển sang bảng khác.
http://stackoverflow.com/questions/7811544/why-does-ef-throw-notsupportedexception-the-method -first-can-only-be-used-as? rq = 1 – Eugene
Tôi không chắc cấu trúc cơ sở dữ liệu của bạn là gì, nhưng có vẻ như có điều gì khác sai về mặt logic với truy vấn của bạn. Sẽ không c.InvoiceItems đã được chỉ có những nơi InvoiceItem.InvoiceId = Invoice.InvoiceId? Nếu bạn đã xác định mối quan hệ đó, việc sử dụng của bạn ở đâu có vẻ dư thừa. Ngoài ra, bạn có thực sự muốn tên Sản phẩm chỉ là mặt hàng đầu tiên trong mỗi hóa đơn mà khách hàng có không? – hatchet