Một dự án chỉ chuyển từ LINQ-to-SQL để LINQ-to-đối tượng, và bây giờ tôi nhận được lỗiLoại nút biểu thức LINQ 'ArrayIndex' không được hỗ trợ trong LINQ to Entities. nhưng được hỗ trợ bởi LINQ-to-sql
The LINQ expression node type 'ArrayIndex' is not supported in LINQ to Entities.
cho dòng này:
var a = db.Table.Single(d => d.Date == dates[0]);
(Sửa chữa nó trong trường hợp đặc biệt này rất dễ dàng, như trong
var firstDate = dates[0];
var a = db.Table.Single(d => d.Date == firstDate);
)
Nhưng tại sao điều này làm việc trong LINQ-to-sql nhưng không phải trong LINQ-to-thực thể? Chúng có làm cho các đối tượng LINQ-to-entity tồi tệ hơn linq-to-sql không? Tôi đang thiếu gì?
LINQ to SQL và LINQ to Các thực thể được phát triển hoàn toàn riêng biệt, không có mã chia sẻ có liên quan ở đây. Nó yêu cầu hỗ trợ thêm trong LINQ to SQL cho cái gì đó ở cái nhìn đầu tiên không có ý nghĩa (có vẻ như bạn đang cố gắng truyền 'ngày' như một tham số mảng, và có máy chủ đọc phần tử đầu tiên), vì vậy tôi ' m đoán nó không phải là rất thường được sử dụng và vì lý do đó chỉ đơn giản là không bao giờ được coi là cho LINQ to Entities. Vì đây là một dự đoán, tôi sẽ không đăng nó như một câu trả lời. – hvd
Dường như một lỗi đối với tôi. Cây biểu thức nên được giải quyết thành các biểu thức đơn giản trước tiên, trước khi dịch sang SQL. Về cơ bản đây là những gì @dontomaso đang thực hiện trước ngày đánh giá [0], nhưng không cần phải làm điều đó theo cách thủ công (đặc biệt là đối với một biểu thức đơn giản như vậy). – Ackroydd