通过Code First 迁移发布asp.net mvc应用程序,与在visual studio 程序包控制器管理台中运行Add-Migration ,Update-Database 一致。
在发布的程序的Web.Config 配置文件数据库初始化器databaseInitializer 为 MigrateDatabaseToLatestVersion。
如果目标服务器数据库不存在,创建数据库,再运行种子方法进行填充。如果数据库存在,则使数据库更新至与模型一致,再运行种子方法进行填充数据库。
一、在需要发布的项目 右键 属性-- 发布。
二、命名部署配置文件,选择发布方法,可以选择WebDeploy ,就是直接从vs中发布到IIS服务器。使用Code First 迁移的方式的发布系统使用的是Deploy方式。 也可以选择本地文件系统,先发布到本地,再将文件拷入服务器。
三、在 连接 配置中输入 服务器(如 本机http://localhost或http://IP地址)、站点名称(如ContosoWebSite)、目标URL(如 http://localhost)(就是应用程序 发布到服务器完成后立即启动的方法或者页面。 然后点 验证连接。
四、在设置 中,数据库 下面输入 数据库连接字符串,如Data Source=(Local);Initial Catalog=ContosoUniversity20151107;IntegratedSecurity=True,( 发布以后,数据库连接字符串将写入 发布的网站程序的Web.config文件。)
勾选 执行CodeFirst迁移(在应用程序启动时),此勾选 将在发布的网站程序中 的配置文件Web.Config 中写入 指定 数据库初始化器 databaseInitializer 为
MigrateDatabaseToLatestVersion。完成在应用程序启动的时候,执行CodeFirst迁移,也就是执行UPSERT操作,如果目标服务器数据库不存在,创建数据库,并运行种子方法进行填充。如果数据库存在,则使数据库更新至与模型一致。
<contexts>
<context type="ContosoUniversity.DAL.SchoolContext,ContosoUniversity">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[ContosoUniversity.DAL.SchoolContext,ContosoUniversity], [ContosoUniversity.Migrations.Configuration,ContosoUniversity]], EntityFramework, PublicKeyToken=b77a5c561934e089">
<parameters>
<parameter value="SchoolContext_DatabasePublish" />
</parameters>
</databaseInitializer>
</context>