ASP.NET MVC 4 让数据库自动迁移

今天实际测试了下这个方法,可以保持数据库与实体类同步,同时不会出现数据库迁移的提示。但是只能更改实体类来改变数据库,而不能改数据库来改变实体类。所以这才是Code frist,如果通过改数据库表来改动实体类,那就是Database first了。

第一步:添加数据库迁移配置类

在Global.asax文件里面添加一个类,这个类继承自数据库迁移配置类:

   public class MyConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration<MvcApplication15.Models.MemberContext>

    {

        public MyConfiguration()

        {

            this.AutomaticMigrationsEnabled = true;

        }

    }

自动迁移设置为 true。

第二步:在Application_Start()方法中使用数据库初始化器

 Database.SetInitializer(new MigrateDatabaseToLatestVersion<MemberContext, MyConfiguration>());

 

经过这2步设置,当实体类发生变动时就不会再有这个恼人的迁移提示了:

 

原始的Global.asax内容如下:

using System.Web.Http;

using System.Web.Mvc;

using System.Web.Optimization;

using System.Web.Routing;



namespace MvcApplication15

{

    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,

    // 请访问 http://go.microsoft.com/?LinkId=9394801



    public class MvcApplication : System.Web.HttpApplication

    {

        protected void Application_Start()

        {

            AreaRegistration.RegisterAllAreas();



            WebApiConfig.Register(GlobalConfiguration.Configuration);

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

            RouteConfig.RegisterRoutes(RouteTable.Routes);

            BundleConfig.RegisterBundles(BundleTable.Bundles);

        }   

    }

}

 

最后更改后的Global.asax文件如下:

using System.Web.Http;

using System.Web.Mvc;

using System.Web.Optimization;

using System.Web.Routing;

using System.Data.Entity;

using MvcApplication15.Models;



namespace MvcApplication15

{

    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,

    // 请访问 http://go.microsoft.com/?LinkId=9394801



    public class MvcApplication : System.Web.HttpApplication

    {

        protected void Application_Start()

        {

            AreaRegistration.RegisterAllAreas();



            WebApiConfig.Register(GlobalConfiguration.Configuration);

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

            RouteConfig.RegisterRoutes(RouteTable.Routes);

            BundleConfig.RegisterBundles(BundleTable.Bundles);



            //使用数据库初始化器自动迁移

            Database.SetInitializer(new MigrateDatabaseToLatestVersion<MemberContext, MyConfiguration>());

        }

    }



    public class MyConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration<MvcApplication15.Models.MemberContext>

    {

        public MyConfiguration()

        {

            this.AutomaticMigrationsEnabled = true;//自动迁移

        }

    }

}

ASP.NET MVC 4 如何避免数据库被自动创建或自动迁移

--End--

你可能感兴趣的:(asp.net)