دسته بندی ها
11:28 1399/07/07

رفع خطای Your target project doesn't match your migrations assembly در انتیتی فریم ورک

مشخصات سوال کننده :
کاربر : mohammadf69     امتیاز کاربر : 2     رتبه کاربر : 145
دسته بندی : Asp.net Core Asp.net Mvc

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3984
هوش مصنوعی

پاسخ هوش مصنوعی

برای رفع خطای "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 های جدید را با موفقیت ایجاد کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 12:11 1399/07/07

با توجه به دستورات موجود در کلاس startup.cs و متد ConfigureService بنظر میاد شما توی پروژه خودتون از لایه بندی استفاده کردید و یک لایه به نام DataModelLayer رو ایجاد کردید. خب حالا خطای شما داره اشاره میکنه که برای ایجاد migration باید در لایه ای مایگریشن رو ایجاد کنید که دیتابیس شما قرار داره.(یا همون کلاس DbContext)

 

  • راه حل اول : وقتی میخواید مایگریشن رو ایجاد کنید باید مشخص کنید که این مایگریشن باید در کدام لایه ایجاد بشه و چون لایه دیتای شما DataModelLayer هست پس باید در قسمت Default Project لایه DataModelLeyer رو انتخاب کنید. به تصویر زیر دقت کنید :

default project in code first

 

  • راه حل دوم : روش بعدی هم برای مشخص کردن اینکه دیتابیس شما در کدام لایه قرار داره این هست که از طریق دستورات خط فرمان مشخص کنید. به دستورات زیر دقت کنید. (البته روش اول خیلی ساده تر هست)
PM> Add-Migration mig333 -Project WebAutomationSystem.DataModelLayer

 

به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
1 نظر
mohammadf69 : درود بر شما استاد بله همین بود ممنون بابت پاسخ

امتیاز کاربر : 2   رتبه کاربر : 145   تاریخ ثبت : 12:37 1399/07/07
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود