Tôi có một hàm để tạo biểu thức được sử dụng trong mệnh đề where LINQ.Biểu thức <Func<T,bool>> thêm một Chuyển đổi không mong muốn khi được tạo theo phương pháp chung
public static Expression<Func<T,bool>> GetWhereCondition<T>() where T : IActive
{
return x => x.Active;
}
(lưu ý IActive chỉ xác định các bất động sản 'Hoạt động')
Có chức năng khác có liên quan và ý tưởng là tôi có thể tiêm các điều kiện cần thiết vào một lớp Generic để kiểm soát quy tắc kinh doanh vv
vấn đề là khi tôi chạy này, Expression trở chứa lamda (nhìn từ phía debugger):
x => Convert(x).Active
đó là tất nhiên rej bởi linq: 'LINQ to Entities chỉ hỗ trợ truyền các kiểu nguyên thủy của Mô hình thực thể.'
Câu hỏi của tôi là ...
Làm cách nào để ngăn chặn hành vi này. Không cần chuyển đổi và rõ ràng là không thể xóa được. Thậm chí có thể ngăn chặn điều này không?
ah, thú vị; sự khác biệt cơ bản có sự thay đổi giữa "ràng buộc" thành "callvirt"; điều thú vị là điều này cho phép nó hoạt động –