今天实际测试了下这个方法,可以保持数据库与实体类同步,同时不会出现数据库迁移的提示。但是只能更改实体类来改变数据库,而不能改数据库来改变实体类。所以这才是Code frist,如果通过改数据库表来改动实体类,那就是Database first了。
第一步:添加数据库迁移配置类
在Global.asax文件里面添加一个类,这个类继承自数据库迁移配置类:
public class MyConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration{ public MyConfiguration() { this.AutomaticMigrationsEnabled = true; } }
自动迁移设置为 true。
第二步:在Application_Start()方法中使用数据库初始化器
Database.SetInitializer(new MigrateDatabaseToLatestVersion());
经过这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()); } } public class MyConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration { public MyConfiguration() { this.AutomaticMigrationsEnabled = true;//自动迁移 } }}
--End--