3

これは私のクエリです

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();

これによりエラーが発生します:

equal to 操作で、"SQL_Latin1_General_CP1_CI_AS" と "Latin1_General_CI_AS" の間の照合の競合を解決できません。

しかし、 .ToList() を削除すると正常に動作します

3つすべての結果を1つのリストに追加して、それを何らかの関数に送信したい3つのクエリがあります。

4

1 に答える 1

3

これがデータベースに到達すると、異なる照合を使用して格納されている 2 つの varchar を比較しようとすることになります。1 つは Latin1 General Case Insensitive Accent Sensitive の SQL 照合を使用しており、もう 1 つはその照合の Windows フレーバーです。

collateSQL では、関連する列に対してを使用して、それらが同じ照合順序で比較されていることを確認することで、これを解決できます。エンティティ フレームワークでは、照合順序を同じにする別の方法を見つける必要があります。

于 2013-02-20T21:32:19.140 に答える