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--

posted @ 2014-01-24 16:25  ibg  阅读(1281)  评论(0编辑  收藏  举报