Tôi đang sử dụng SQL Server 2005, với một cơ sở dữ liệu nhạy cảm trường hợp ..LINQ to Entities: sử dụng ToLower() trên các lĩnh vực ntext
Trong một chức năng tìm kiếm, tôi cần phải tạo ra một LINQ to Entities (L2E) truy vấn với mệnh đề "where" so sánh nhiều chuỗi với dữ liệu trong cơ sở dữ liệu với các quy tắc sau:
- So sánh là chế độ "Chứa", không được phép so sánh chặt chẽ: dễ dàng như phương thức Chứa() của chuỗi L2E
- So sánh phải phân biệt chữ hoa chữ thường: Tôi sử dụng ToLower() trên cả hai phần tử để thực hiện so sánh không nhạy cảm.
Tất cả điều này thực hiện tốt nhưng tôi chạy vào ngoại lệ sau đây: "Loại dữ liệu đối số ntext không hợp lệ cho đối số 1 của hàm thấp hơn" trên một trong các trường của tôi.
Dường như trường đó là trường NText và tôi không thể thực hiện ToLower() trên đó.
Tôi có thể làm gì để có thể thực hiện một trường hợp không nhạy cảm Chứa() trên trường NText đó?
hum ... Tôi đoán bạn nói với tôi rằng việc sử dụng ToLower() là sai nhưng tôi không có giải pháp nào khác như: - Thay đổi collation là quá nhiều công việc & rủi ro chỉ cho một số tiêu chí tìm kiếm - Equals & StartsWith won không phù hợp với nhu cầu ở đây. Tôi đang suy nghĩ về việc chuyển đổi trường NText thành NVarchar và giới hạn đầu vào của người dùng ... Hiệu suất không thực sự quan trọng trong trường hợp của tôi. –
Tôi chỉ đang cố gắng cho bạn biết các tùy chọn là gì, không khẳng định rằng một số tùy chọn lý tưởng cho bạn tồn tại .... –