này hoạt động:Tại sao LINQ-to-Entites nhận ra phương thức tùy chỉnh của tôi?
Entities.WorkOrderSet.Where(MyCustomMethod);
này không:
Entities.WorkOrderSet.Where(o => MyCustomMethod(o));
([Chỉnh sửa] Ngay cả khi không new
, nó không hoạt động)
Tôi hiểu lý do tại sao thứ hai không hoạt động - nhưng tại sao thế giới lại làm việc đầu tiên !? Tôi không nên nhận được một "LINQ-to-Entities không nhận ra phương thức ..." khi chạy, như với lần thứ hai?
Để tham khảo, đây là MyCustomMethod
public bool MyCustomMethod(WorkOrder workOrder)
{
return !workOrder.WorkOrderNum.StartsWith("A", StringComparison.CurrentCultureIgnoreCase);
}
Sử dụng EF1, không EF4
Bạn nhận được ngoại lệ nào khi bạn cố chạy ứng dụng thứ hai? –
Ngoài ra .. bạn có chắc chắn EF không chỉ nhận được toàn bộ bảng và chạy các chức năng cục bộ khi bạn chạy shippet đầu tiên của bạn? Chạy trình lược tả SQL và kiểm tra truy vấn nào được gửi đến máy chủ? –
Tôi nhận được "LINQ-To-Entities không thể nhận ra phương thức ..." - đây là hành vi mong đợi, vì các phương thức tùy chỉnh không thể được dịch sang SQL. Việc sửa lỗi thông thường là gọi .ToList() trước ... nhưng vì một lý do nào đó, nó có vẻ hoạt động mà không có điều đó! –