Chúng tôi có một số dự án trong VB.Net, sử dụng .Net Framework 4 và LINQ to Entities cho nhiều truy vấn SQL của chúng tôi. Chuyển sang EF là một sự thay đổi mới cho chúng tôi (sử dụng nó trong khoảng 4-6 tháng) và có sự ủng hộ của quản lý cấp cao vì chúng tôi có thể viết mã nhanh hơn rất nhiều. Chúng tôi vẫn sử dụng rất nhiều procs được lưu trữ, nhưng chúng tôi thậm chí còn thực thi chúng thông qua LINQ to Entities.VB.Net LINQ to Entities So sánh Null - 'Không có gì' hoặc '= Không có gì'?
Tôi hy vọng xóa một số nhầm lẫn và tôi không thể tìm thấy câu trả lời trực tiếp có ý nghĩa. Chúng tôi có một số truy vấn mà chúng tôi muốn các bản ghi trong đó một trường cụ thể có giá trị NULL. Đây là những lựa chọn truy vấn đơn giản, không có uẩn hoặc trái tham gia vv Microsoft khuyến cáo giao diện truy vấn cái gì đó như MSDN Link này:
dim query = from a in MyContext.MyTables
Where a.MyField = Nothing
Select a
Tôi có một số dự án mà tôi thực hiện chính xác này và nó hoạt động tuyệt vời, không có cảnh báo trong IDE . Gần đây, một dự án mới đã được tạo bởi một nhà phát triển khác và khi anh ta kiểm tra null như trên, tất cả chúng ta đều nhận được cảnh báo này trong IDE:
Cảnh báo 1 Biểu thức này sẽ luôn luôn đánh giá Không có gì (do truyền null từ toán tử bằng). Để kiểm tra xem giá trị là null xem xét sử dụng 'Không có gì'.
So sánh các dự án, tùy chọn rõ ràng và tùy chọn nghiêm ngặt được bật cho từng loại. Nếu chúng ta bỏ qua cảnh báo, chúng ta sẽ có được bộ bản ghi chính xác mà chúng ta đang tìm kiếm khi ứng dụng chạy. Cảnh báo sẽ biến mất nếu tôi thay đổi dấu = thành IS. Nhưng tại sao cảnh báo này lại xuất hiện trong một dự án chứ không phải những dự án khác? Nó gây nhầm lẫn khi ngay cả trên MSDN có những ví dụ bằng cách sử dụng toán tử equals.
VB.NET LINQ cũng có từ khóa 'Equals'. Tôi không có cách nào để kiểm tra nó, nhưng có thể thử thay vào đó? 'Where a.MyField Equals Nothing ' –
@Cory: Đó là một từ khóa theo ngữ cảnh chỉ được sử dụng trong mệnh đề' Tham gia' (AFAIK). Tôi không nghĩ rằng bạn có thể sử dụng nó ở bất cứ nơi nào khác. –