如何在上下文和模型位于单独的程序集中时启用迁移

时间:2015-08-19 20:13:47

标签: c# entity-framework migration

我正在使用Entity Framework 6开发一个c#windows桌面项目。解决方案中有3个不同的项目。让我们说.EDMX这是一个启动项目并包含exe文件; ProjectA这是框架并包含ProjectB;和DbContext包括所有模型。

现在我真的不知道如何为这些不同的项目启用迁移,因为每个项目将成为一个单独的程序集。

我熟悉启用迁移和添加迁移命令,但是当上下文位于另一个程序集中并且模型位于另一个程序集中时,我不知道如何使用它。

请帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以设置可以从启动项目调用的初始化类。

 public static class InitializeAndSeed
        {
            public static void InitializeContext()
            {
                Database.SetInitializer(new MigrateDatabaseToLatestVersion<YourDbContext 
                                        ,YourDbContextMigrations>());

                using (var db = new YourDbContext())
                {
                    db.Database.Initialize(false);
                }
            }


        }

    public class YourDbContextMigrations : DbMigrationsConfiguration<YourDbContext>
        {


            public YourDbContextMigrations ()
            {
                AutomaticMigrationsEnabled = true;
                AutomaticMigrationDataLossAllowed = true;   
            }

          //Your seeding and your migrations
         }

然后,从您的启动项目中,您可以调用InitializeContext()方法从应用程序启动类或您需要的任何位置初始化上下文。您只想确保每个应用程序启动时只初始化一次。