ارتقای سطح سازگاری پیشفرض به SQL Server 2022 در EF Core 11
نویسنده: وحید نصیری
تاریخ: ۱۴۰۵/۰۴/۰۱ ۰۹:۲۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
DbContext تنظیم کنید. به عنوان مثال، برای سازگاری با SQL Server 2019 (سطح 150):optionsBuilder.UseSqlServer(
connectionString,
sqlServerOptions => sqlServerOptions.UseCompatibilityLevel(150)); // SQL Server 2019GREATEST و LEAST):Math.Max یا Math.Min) از توابع مدرن GREATEST و LEAST استفاده میکند که در SQL Server 2022 معرفی شدهاند. در نسخههای قدیمیتر با این خطا مواجه میشوید: SqlException: 'GREATEST' is not a recognized built-in function name. یا 'LEAST' is not a recognized built-in function name.JSON_ARRAY):JSON_ARRAY استفاده میشود. نسخههای قدیمیتر SQL Server این تابع را نمیشناسند: SqlException: 'JSON_ARRAY' is not a recognized built-in function name.IS DISTINCT FROM:NULL بودن، EF Core 11 ممکن است از سینتکس مدرن IS DISTINCT FROM یا IS NOT DISTINCT FROM استفاده کند که در نسخههای پیش از 2022 وجود ندارد: SqlException: Incorrect syntax near 'DISTINCT'.Compatibility Level به بازنویسی بهینه کوئریها (Query Rewrite) کمک میکند. SQL Server 2022 دارای یک ویژگی به نام Parameter Sensitive Plan Optimization است که EF Core 11 با فرض فعال بودن آن، کوئریها را ارسال میکند.Compatibility Level آن در تنظیمات دیتابیس همچنان روی نسخههای قدیمی (مثل 140 یا 150) باقی مانده است.UseCompatibilityLevel روی نسخه فعلی دیتابیس خود قفل کنید. سپس پس از ارتقای سرور پایگاه داده به نسخه 2022، این خط کد را حذف کنید تا از مزایای سرعت و سینتکس جدید بهرهمند شوید.