تغییر ناگهانی NET8/EF8. سرورهای/پایگاه های داده قدیمی ممکن است پرس و جوهای EF8 را درک نکنند.
چکیده: در NET8/EF8، هنگام کار با SQL Server، EF ممکن است یک نسخه جدیدتر از پرس و جوهای SQL ایجاد کند که سرورهای/پایگاه های داده قدیمی SQL آن را درک نکنند و آن را به عنوان یک خطای نحوی در نظر بگیرند. راه حل همگام سازی سطوح سازگاری سرور و مشتری است.
1 توضیح مشکل
1.1 محیط زیست
محیط معمولی که این مقاله برای آن اعمال می شود، C#/.NET8/Entity Framework 8/MS SQL Server است.
1.2 بروز مشکل
شما یک استثنا دریافت می کنید: Microsoft.Data.SqlClient.SqlException (0x80131904): نحو نادرست در نزدیکی ‘$’.
1.3 علت مشکل
به طور معمول، شما یک سطح سازگاری پایگاه داده 120 و سطح سازگاری Entity Framework 160 است. به طور خلاصه، EF شما در حال تولید کد SQL در یک نسخه پیشرفته تر از زبان SQL است که پایگاه داده شما قادر به درک آن نیست. یا مقادیر مشابه برای سطوح، اما نکته این است عدم تطابق سطوح سازگاری.
ممکن است بپرسید نسخه جدید کد SQL تولید شده توسط EF8 چقدر متفاوت است؟ خوب، به نظر می رسد که به زودی سعی می کند لیست های JSON را به سرور SQL ارسال کند، سرورهای SQL جدیدتر آن را درک می کنند، اما قدیمی آن را درک نمی کند، بنابراین آن را به عنوان یک خطای نحوی در نظر می گیرد.
1.4 بررسی مشکل
برای تأیید اینکه واقعاً این موضوع است …