2010-02-09 41 views
7

Có ai biết cách chúng tôi có thể giải quyết vấn đề đối chiếu trong truy vấn LINQ được chọn không? Tôi nhận được lỗi này khi tôi muốn chọn dữ liệu trong LINQ.xung đột đối chiếu

Không thể giải quyết mâu thuẫn đối chiếu giữa "SQL_Latin1_General_CP1_CI_AS" và "Latin1_General_CI_AS" trong tương đương với hoạt động

var lstData = from s in dataTrackDB.datas 
       join b in dataTrackDB.brandDatas on i.brandcode equals b.brandcode 
       join b in dataTrackDB.brandDatas on i.brandcode equals b.brandcode 
       join b in dataTrackDB.brandDatas on i.brandcode equals b.brandcode 
       join m in dataTrackDB.mktDatas on s.mktcode equals m.mktcode 
       select new dataView { 
        Account=m.account, 
        brandcode=b.brandcode, 
        commodity=s.commodity, 
        date=s.date, 
        daysvalid=s.daysvalid, 
        mfrcode=b.mfrcode, 
        mktcode=s.mktcode, 
        price=s.price, 
        prodid=s.prodid, 
        statecode=s.statecode, 
        subcommodity=s.subcommodity, 
        supprecode=s.supprecode, 
        units =s.units 
       }; 

lstData = lstData.AsQueryable().Where(x => x.mfrcode == mfr); 

return lstData.Take(100).ToList(); 
+0

Bạn chắc chắn có sai số trong LINQ? nghe có vẻ giống với một máy chủ SQL ... –

+0

Thay đổi tùy chọn đối chiếu? AFAIK 'collate database_default' không được hỗ trợ qua Linq-to-SQL –

+0

Tôi đã chọn qury từ các bảng khác nhau từ các máy chủ khác nhau và cài đặt đối chiếu của chúng khác nhau. trong lựa chọn linq truy vấn của tôi, tôi sẽ nhận được lỗi này – Naseem

Trả lời

4

Vấn đề không phải là trong LINQ nhưng trong cơ sở dữ liệu của bạn

bạn có thể ví dụ như tạo ra một cái nhìn tham gia theo cách đó và chọn dữ liệu trong LINQ từ chế độ xem

SELECT * FROM T1 
INNER JOIN T2 ON 
T1.Name COLLATE Latin1_General_CI_AS = T2.Name COLLATE Latin1_General_CI_AS 

hoặc chọn dữ liệu đầu tiên trong linq2sql riêng biệt cho mỗi bảng và sau đó tham gia nó với linq2object

+0

Hầu hết chúng ta biết cú pháp trong sql nhưng những gì nếu abut cú pháp truy vấn LINQ ??? –

0

thêm COLLATE DATABASE_DEFAULT ở phần cuối của các truy vấn

Các vấn đề liên quan