Tôi đang cố gắng thực hiện một truy vấn LINQ to SQL đơn giản đối với cơ sở dữ liệu SQL CE.đánh giá một boolean dựa vào một trường bit trong truy vấn LINQ to SQL
var result = from item in items
where item.IsTrue == true
select item;
Vấn đề là các IsTrue
bất động sản là một lĩnh vực bit
trong cơ sở dữ liệu (bool
trong CLR). Khi nó đi vào SQL trong CE tôi nhận được SELECT ... WHERE ([t0].IsTrue = 1)..
Giá trị 1 là một số nguyên để SqlCe và nó sẽ không đúc nó theo mặc định.
Chỉ mục mà tôi có trên cột đó (cột IsTrue) không được sử dụng. Thay vào đó, nó cố gắng bỏ tất cả các giá trị istrue
trong cơ sở dữ liệu sang số nguyên và so sánh chúng với 1.
Làm cách nào để LINQ to SQL tạo ra WHERE ([t0].IsTrue = Cast(1 as bit))...
? Tôi cần bằng cách nào đó để buộc việc đúc giá trị đó vào một bit
và do đó cho phép sử dụng chỉ mục?
tôi đã cố gắng:
item.IsTrue == Convert.ToBoolean(1)
item.IsTrue == Convert.ToBoolean("true")
item.IsTrue == (bool)true)
Hy vọng để có được những cây biểu thức để có một dàn diễn viên trong nó để nó chuyển thành một dàn diễn viên trong LINQ To SQL, nhưng tôi không thể tìm thấy một cách. Bất kỳ ý tưởng?
Tôi biết đã 6 năm sau đó, nhưng Khung thực thể đang thực hiện quá trình truyền tới bit. Ít nhất là nó là dành cho tôi. –