3

을 "데이터 정렬 충돌을 해결할 수 없습니다"오류를 제공 이것은이 나에게주는 오류 내 쿼리ToList()는

var maillst = (from o in ObjContext.CashDepositCapturings 
       join m in ObjContext.Merchants on o.MerchantID equals m.MerchantID 
       join u in ObjContext.Users on o.CreatedBy equals u.UserID 
       where u.EmailAddress != String.Empty && u.EmailAddress != null && 
       o.CashDepositCapturingID.Equals(dataModel.CashDepositId) 
       select new CashDepositApproveMail 
       { 
        SendToEmailId = u.EmailAddress, 
        SendToFirstName = u.FirstName, 
        sendToLastName = u.LastName, 
        cashDepoCreatedBy = o.CreatedBy, 
        CashDepoCaptrId = o.CashDepositCapturingID 
       }).ToList(); 

입니다 :

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

을하지만 난 .ToList()를가 잘

작동 제거 할 때

나는 세 가지 쿼리를 하나의 목록에 모든 세 가지 결과를 추가하고 일부 기능에 보내고 싶습니다.

+0

사용중인 데이터베이스에 대한 태그를 추가해야합니다 (SQL Server 또는?). 아마도 Entity Framework가 아니라 데이터베이스 엔진에서 예외가 발생했을 것입니다. – Slauma

+2

.ToList()를 제거한 이유는 Linq 쿼리가 지연 평가 되었기 때문입니다. 즉, 쿼리가 마지막 순간에 실행됩니다. .ToList()를 제거하면 쿼리가 전혀 실행되지 않습니다. –

+0

@SystemDown 도움을 주셔서 감사합니다. –

답변

3

데이터베이스에 도착하면 다른 데이터 정렬을 사용하여 저장된 두 varchar를 비교하려고합니다. 하나는 Latin1 일반 대/소문자 구분 악센트 구분에 SQL 데이터 정렬을 사용하고 다른 하나는 해당 데이터 정렬에 대한 Windows의 특징입니다.

SQL에서는 관련 열에 대해 collate을 사용하여이 문제를 해결할 수 있습니다.이 경우 해당 열을 동일한 데이터 정렬로 비교할 수 있습니다. 엔티티 프레임 워크에서 데이터 정렬을 동일하게 만드는 다른 방법을 찾아야합니다.

+0

해결 방법으로, 데이터 정렬을 변경하여 동일하게 만듭니다. – abatishchev

+0

@muhmud 감사합니다. 데이터베이스 정렬 유형을 변경하여 일치시키고 작동하도록했습니다. –

+0

@abatishchev 감사합니다. 저는 우리가 엔티티 프레임 워크를 통해이를 어떻게 처리 할 수 ​​있는지 알고 싶었습니다. 그리고 남자는 편집 해 주셔서 감사합니다. –