برطرف خطای Collation در LINQ
با سلام
جدول A را با Collation Arabic_CI_AS دارم و جدول B را با Collation SQL_Latin1_General_CP1256_CI_AS دارم
مشکل اینجاست که وقتی LINQ بین این دو جدول بر اساس کلید ارتباطی زده میشود
from a in DataContext.A
join a in DataContext.B on a.af equals b.bf
select new { a,b.bf }
این خطا نمایش داده میشود
Cannot resolve the collation conflict between "Arabic_CI_AS" and "SQL_Latin1_General_CP1256_CI_AS" in the equal to operation.
چگونه میشه این مشکل رو حل کرد ؟
در خود SQL بعد از فیلد اول دستور COLLATE Arabic_CI_AS می آید و این مشکل را حل میکند
این دستور را در LINQ چگونه میشه پیاده کرد ؟
نقل قول: برطرف خطای Collation در LINQ
سلام دوست عزیز .به نظرم تنها راهی که دارین اینه که هر یک از جداول رو تک تک بخونید بعد به صورت linq to object و به صورت زیر join کنید.
var lst1 = from s in datacontext.Table1 select s;
var lst2 = from s in datacontext.Table2 select s;
var joinResult = from m in lst1
join n in lst2 on m.RefrenceField equals n.ForeignkeyField
select new { m, n };
نقل قول: برطرف خطای Collation در LINQ
سلام و تشکر
دوست عزیز اصل قضیه اینجاست که بنده بین 3 جدول بصورت زیر باید LINQ داشته باشیم
(from n in Factors_Sub
from m in Factors
from a in AID_AUTO
where m.FactorTypeID == 3 && n.FactorID == m.FactorID && n.AutoCode == ( a.AUTOCODE) group n by new { n.PackageID, n.FactorID , n.AutoCode } into g
select new { PID = g.Key.PackageID,AutoCode = g.Key.AutoCode , SumTax = g.Sum(x=>x.Tax) , SumToll = g.Sum(x=>x.Toll) , SumDiscount = g.Sum(x=>x.Discount) ,
SumTotal = g.Sum(x=>x.Total) } )
خطا هم موقعی رخ میدهد که AUTOCODE == AutoCode را بررسی میکنیم!!!
نقل قول: برطرف خطای Collation در LINQ
الان تو این مثال collatione کدوم جداول با هم فرق داره؟
اونی که فرق داررو اول select کنید بعد با 2 تای دیگه join کنید .
نقل قول: برطرف خطای Collation در LINQ
خوب کمی دقت میکردی خودت میتونستی متوجه بشی که جداول کدام ها هستند
جدول Factors_Sub , AID_AUTO
نقل قول: برطرف خطای Collation در LINQ
نقل قول:
نوشته شده توسط
sanay_esh
چگونه میشه این مشکل رو حل کرد ؟ در خود SQL بعد از فیلد اول دستور COLLATE Arabic_CI_AS می آید و این مشکل را حل میکند این دستور را در LINQ چگونه میشه پیاده کرد ؟
سلام.
شما دو راه حل (صحیح) پیش رو دارید که البته هیچ کدوم به LINQ ارتباطی نداره:
- View ای متشکل از کلیه فیلدهای مورد نظر از سه جدول ایجاد کنید و اونجا Collation رو Handle کنید. (روش رو در پاسخ به سوال مشابه در این آدرس ببینید).
- یک بار در بانک و با استفاده از ALTER COLUMN، مقدار Collation رو تغییر بدید تا کلیه فیلدها از یک Collation خاص استفاده کنند. (روش انجام اینکار رو اینجا ببینید).
بعد از انجام یکی از این دو کار، اونوقت می تونید LINQ مورد نظر رو بنویسید.
موفق باشید.
نقل قول: برطرف خطای Collation در LINQ
جناب موسوی خیلی ممنون
بنده این مشکل را با راه حل پیشنهادی شما انجام داده بودم و مرحله را به پایان رساندم
خواستم بدونم که آیا در LINQ این امکان وجود دارد که دستورات خود SQL را در آن اجرا نمود حتی مانند Convert ها که فکر میکنم لینک خودش پشتیبانی نمیکنه ؟؟؟
نقل قول: برطرف خطای Collation در LINQ
نقل قول:
نوشته شده توسط
sanay_esh
خواستم بدونم که آیا در LINQ این امکان وجود دارد که دستورات خود SQL را در آن اجرا نمود؟؟؟
بله، شما می تونید از متود ExecuteQuery برای اجرای مستقیم دستورات SQL استفاده کنید.
موفق باشید.