اخیراً با آپدیت ویژوال استودیو 2022 به یه اروری بر خوردم که رفع کردنش تایم زیادی ازم گرفت اما نهایتاً متوجه شدم که مشکل از آپدیت برنامه هست. چون اخیراً دیدم که چند نفر دیگه هم این مشکل رو داشتن گفتم راه حلی که پیدا کردم رو اینجا بذارم.
مشکل این بود که وقتی میخواستم مدلم رو از روی دیتابیس بسازم با خطای NullReferenceException زیر مواجه میشدم:
Running transformation: System.NullReferenceException: Object reference not set to an instance of an object
اگر با چنین خطایی مواجه شدید مشکل از یک خط کد توی DynamicTextTransformation در پوشه Entity Framework هست که با تغییر اون مشکل برطرف میشه.
برای این کار اول Notepad رو به صورت Run as administrator باز کنید و به آدرس زیر برید.
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.ttinclude
اگر از نسخه Enterprise استفاده میکنید به این آدرس برید:
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.ttinclude
بعد میبینید که دو تا فایل به نامهایEF6.Utility.CS.ttinclude وجود داره که باید این خط کد رو داخل هر دو تغییر بدیم. با استفاده از ctrl+f خط کد زیر رو جستجو کنید:
_generationEnvironment = type.GetProperty("GenerationEnvironment", BindingFlags.Instance | BindingFlags.NonPublic);
و اون رو با خط کد زیر جایگزین کنید:
_generationEnvironment = type.GetProperty("GenerationEnvironment", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
که میبینید تفاوت فقط توی اضافه شدن عبارت BindingFlags.Public هست. این تغییر رو توی هر دو فایل اعمال کنید و بعد هم saveو تمام.
امیدوارم به درد دوستانی بخوره که با این ارور مواجه شدن :)