iro*_*man 69 c# asp.net-mvc entity-framework
我想知道如何为生产数据库运行'Update-Database'命令.
"更新 - 数据库"数据库在我的本地计算机上运行良好,但如何使其适用于生产数据?
因此,如果我对我的应用程序进行更改,然后通过visual studio运行"发布",这对于代码方面的工作正常,但是如何为生产数据运行"Update-Database"命令.
希望这个问题有道理......
谢谢,
Dav*_*ore 32
请参阅在生产中使用实体框架(代码优先)迁移,以便在实体框架初始化时应用程序自动更新数据库.
现在,如果您更熟悉手动控制迁移,可以使用开发人员计算机上的Update-Database命令的-Script参数生成SQL脚本,然后可以对生产数据库运行这些脚本.
http://msdn.microsoft.com/en-us/data/jj591621.aspx(请参阅获取SQL脚本部分)
NSG*_*aga 24
添加@David已经说过的内容......
就个人而言,我不相信automatic updates
"实时"场景,我总是喜欢手动数据库管理(即permissions
创建或改变Db需要一个问题- 更不用说共享主机等) - 但是从我所看到的在同步时,迁移是非常可靠的(实际上,通常是"解开"它们的唯一方法是删除Db并强制执行完全/新的更新).
这里是一个后我做了前段时间关于如何script
与synchronize database / code
朝部署方案(当出现问题)为目标.它不适用于你(还),但要记住一些事情.
MVC3和Code First Migrations - "创建数据库后,支持'blah'上下文的模型已经改变"
您是否只想在您的应用程序运行(开发和生产)的时间和地点自动将数据库更新到最新版本?
这可能不是一个好主意,除非在您知道可以信任自动迁移并且手动迁移数据库不可行的非常简单的场景中。请参阅此答案:https : //stackoverflow.com/a/15718190/2279059。如果您忽略此警告,请继续阅读。
将以下内容添加到web.config
:
<entityFramework>
<contexts>
<context type="MyAssembly.MyContext, MyAssembly" disableDatabaseInitialization="false">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyAssembly.MyContext, MyAssembly], [MyAssembly.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
Run Code Online (Sandbox Code Playgroud)
这可能看起来很吓人,但它与以下代码基本相同:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());
Run Code Online (Sandbox Code Playgroud)
如果您没有运气web.config
,那么您也可以尝试将此代码放入Global.asax
. 我个人更喜欢配置而不是代码。
如果你想让你的配置文件看起来更简洁,你还可以从模板MigrateDatabaseToLatestVersion
类派生一个新类,这样你就不需要使用神秘的语法在web.cofig
文件中传递类型参数:
public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}
Run Code Online (Sandbox Code Playgroud)
这样做是设置一个数据库初始化程序,它会自动将数据库更新到最新版本。
(来源和更多详细信息:http : //www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html)
您可以使用生产连接字符串运行Update-Database EF Tools 命令,如下所示:
Update-Database -Args '--environment Production'
Run Code Online (Sandbox Code Playgroud)
来源:https ://learn.microsoft.com/en-us/ef/core/cli/powershell#aspnet-core-environment
正如其他人所说,您必须格外小心,您绝对应该首先在暂存环境中尝试。
归档时间: |
|
查看次数: |
73473 次 |
最近记录: |