رفع خطای Your target project doesn't match your migrations assembly در انتیتی فریم ورک
درود بر اساتید ودوستان گرامی
مشکل : از قبل از طریق Code first دیتابیس درست کردم به اسم mig1 و الان برای میخواهم یک ویو مدل درست کنم برای ثبت جدول کاربران با چند property جدید به اسم mig2 میگ این خطا را به من میدهد:
Your target project 'WebAutomaiton_system' doesn't match your migrations assembly 'web_Automationsystem.DataModelLayer'. Either change your target project or change your migrations assembly.
Change your migrations assembly by using DbContextOptionsBuilder. E.g. options.UseSqlServer(connection, b => b.MigrationsAssembly("WebAutomaiton_system")). By default, the migrations assembly is the assembly containing the DbContext.
Change your target project to the migrations project by using the Package Manager Console's Default project drop-down list, or by executing "dotnet ef" from the directory containing the migrations project.
دستورات فایل appsetting.json :
{
"ConnectionStrings": {
"AutomationConnectionString": "Data Source=.; Initial Catalog=WebAutomationSystemDB;Trusted_Connection=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
کلاس Startup.cs
public void ConfigureServices(IServiceCollection services)
{//databaseservice
services.AddDbContext<ApplicationDbContext>(option=>option.UseSqlServer(Configuration.GetConnectionString("AutomationConnectionString"),
datamodel =>datamodel.MigrationsAssembly("web_Automationsystem.DataModelLayer")));
//identityservice
services.AddIdentity<ApplicationUsers, ApplicationRoles>()
.AddEntityFrameworkStores<ApplicationDbContext>().AddDefaultTokenProviders();
services.AddControllersWithViews();
پاسخ هوش مصنوعی
برای رفع خطای "Your target project doesn't match your migrations assembly" در انتیتی فریم ورک، می توانید از روش های زیر استفاده کنید:
1. **تغییر پروژه هدف در Package Manager Console**: به بالای پنجره Package Manager Console رفته و در منوی کشویی Default project، پروژه ای که حاوی Migration ها می باشد را انتخاب کنید.
2. **تغییر اسمبلی Migration در DbContextOptionsBuilder**: شما می توانید از کدی که در کلاس Startup.cs در بخش ConfigureServices نوشته اید استفاده کنید. اطمینان حاصل کنید که نام اسمبلی مطابق با پروژه ای که می خواهید Migration ها را در آن ایجاد کنید، تنظیم شود:
public void ConfigureServices(IServiceCollection services)
{
//database service
services.AddDbContext(option => option.UseSqlServer(
Configuration.GetConnectionString("AutomationConnectionString"),
datamodel => datamodel.MigrationsAssembly("WebAutomaiton_system"))); // اطمینان حاصل کنید نام اسمبلی درست باشد
//identity service
services.AddIdentity()
.AddEntityFrameworkStores().AddDefaultTokenProviders();
services.AddControllersWithViews();
}
3. **استفاده از دستور dotnet ef**: اگر از خط فرمان استفاده می کنید، به دایرکتوری پروژه ای که حاوی Migration ها است بروید و دستورات Entity Framework را از آنجا اجرا کنید.
با این تغییرات، باید این خطا رفع شود و بتوانید Migration های جدید را با موفقیت ایجاد کنید.
با توجه به دستورات موجود در کلاس startup.cs و متد ConfigureService بنظر میاد شما توی پروژه خودتون از لایه بندی استفاده کردید و یک لایه به نام DataModelLayer رو ایجاد کردید. خب حالا خطای شما داره اشاره میکنه که برای ایجاد migration باید در لایه ای مایگریشن رو ایجاد کنید که دیتابیس شما قرار داره.(یا همون کلاس DbContext)
- راه حل اول : وقتی میخواید مایگریشن رو ایجاد کنید باید مشخص کنید که این مایگریشن باید در کدام لایه ایجاد بشه و چون لایه دیتای شما DataModelLayer هست پس باید در قسمت Default Project لایه DataModelLeyer رو انتخاب کنید. به تصویر زیر دقت کنید :
- راه حل دوم : روش بعدی هم برای مشخص کردن اینکه دیتابیس شما در کدام لایه قرار داره این هست که از طریق دستورات خط فرمان مشخص کنید. به دستورات زیر دقت کنید. (البته روش اول خیلی ساده تر هست)
PM> Add-Migration mig333 -Project WebAutomationSystem.DataModelLayer
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2