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