Một khả năng - nếu mt.PARENT_KEY
thuộc một số loại khác (ví dụ: long?
) thì sẽ có chuyển đổi liên quan.
Sẽ hữu ích nếu bạn có thể hiển thị các loại có liên quan và truy vấn được tạo trong mỗi trường hợp.
EDIT: Tôi nghĩ rằng tôi có một ý tưởng ...
Nó có thể là bởi vì SQL và C# có ý kiến khác nhau về những gì bình đẳng có nghĩa là khi nói đến null. Hãy thử điều này:
where (mt.PARENT_KEY == id) || (mt.PARENT_KEY == null && id == null)
Nếu đây là trường hợp sau đó nó là một trường hợp góc khá xấu xí, nhưng tôi có thể hiểu được lý do tại sao nó được thực hiện theo cách đó ... nếu SQL được tạo ra chỉ được sử dụng
WHERE PARENT_KEY = @value
thì điều đó sẽ không hoạt động khi giá trị là null - cần:
WHERE (PARENT_KEY = @value) OR (PARENT_KEY IS NULL AND @value IS NULL)
đó là những gì truy vấn LINQ sau đó sẽ tạo ra.
Ra quan tâm, tại sao bạn chọn với
select new { mt.NAME }
thay vì chỉ
select mt.NAME
?) Tại sao bạn sẽ muốn có một chuỗi các loại vô danh thay vì một chuỗi các chuỗi (hoặc bất kỳ loại nào NAME
là?
Nguồn
2009-07-14 15:25:23
Bạn đã thử xem SQL được tạo trong mỗi trường hợp chưa? Loại mt.PARENT_KEY là gì? –
khóa chính là số nguyên –
Trong mã được tạo? Nullable, Nullable ? –