الحصول على DbContexts متعددة لاستخدام عمليات الترحيل مع نفس قاعدة البيانات

StackOverflow https://stackoverflow.com//questions/21053780

سؤال

استنادًا إلى نموذج مشروع MVC5، أحاول تعلم الطريقة الصحيحة للتعامل مع عمليات الترحيل.

لدي في الدليل الجذر مجلد يسمى "DbContexts" يحتوي على سياقين.

أول واحد:IdentityContext.cs

    public class IdentityContext : IdentityDbContext<ApplicationUser>
{
    public IdentityContext()
        : base("DefaultConnection")
    { }
}

ثم لدي مجلد يسمى IdentityMigrations مع Configuration.cs

    internal sealed class Configuration : DbMigrationsConfiguration<TryFive.Web.DbContexts.IdentityContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        MigrationsDirectory = @"DbContexts\IdentityMigrations";
    }

    protected override void Seed(TryFive.Web.DbContexts.IdentityContext context)
    {
        //  This method will be called after migrating to the latest version.

        //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
        //  to avoid creating duplicate seed data. E.g.
        //
        //    context.People.AddOrUpdate(
        //      p => p.FullName,
        //      new Person { FullName = "Andrew Peters" },
        //      new Person { FullName = "Brice Lambson" },
        //      new Person { FullName = "Rowan Miller" }
        //    );
        //
    }
}

ثم لدي MyContexts بخصائص مماثلة.

عندما أحاول تشغيل أمر "تحديث قاعدة البيانات" تظهر لي رسالة الخطأ هذه: The type 'TryFive.Web.DbContexts.IdentityContext' does not inherit from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. Migrations configuration types must extend from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'.

هل لديك أي فكرة عن كيفية إصلاح هذا أو طريقة أفضل للقيام بأشياء DbContext هذه؟

هل كانت مفيدة؟

المحلول

اقتراح:إذا كنت تقوم فقط بتنفيذ مشروع نموذجي لتعلم عمليات الترحيل كما تقول، فالتزم بـ DbContext واحد.اجعل الأمر بسيطًا - ادمج كياناتك في DbContext واحد يرث منه IdentityDbContext<ApplicationUser>

احذف مجلدات الترحيل الحالية التي قمت بإنشائها - وأعد "تمكين الترحيلات" بعد حذف DbContext الثاني.سيساعدك هذا على مواصلة تعلم عمليات الترحيل، بدلاً من تعلم كيفية استخدام اثنين من DbContext في مشروع واحد.

أيضًا،Lajos، لست متأكدًا من نوع MVC الذي تتحدث عنه، لكن DbContext الخاص بي لم يرث أبدًا من DbMigrationsConfiguration - لقد ورثوا من DbContext أو IdentityDbContext.ما تشير إليه هو فئة MigrationsConfiguration التي يتم إنشاؤها عند إصدار "enable-migrations" في المشروع.يتم استخدامه لتوليد الهجرات وبذر البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top