coo*_*les 9 c# mysql database sql-server entity-framework
我首先使用实体框架代码开发了一个非常简单的Web应用程序.我意识到经过几个小时的挫折之后,即使localdb是SQL Server Express,它实际上并不意味着在使用'publish'(发布向导)时与生产一起使用.仅供参考我使用的是EF 6.1.3,SQL Server 2014,VS 2013和IIS 7.
如果我理解正确,当您单击使用localdb发布时,您真正要做的就是将localdb数据库复制到IIS 7服务器.我无法弄清楚为什么当我通过VS迁移更新我的lodaldb数据库时,我的生产服务器数据库没有被更新.我理解(并且现在相信)它实际上是localdb的两个不同实例,因此不是相同的数据.
没问题 - 我已经完成了localdb,我在我的机器上创建了一个真正的SQL Server 2014数据库.我用Google搜索了几个小时,无法弄清楚现在要做什么.我有一些问题:
如何使用EF管理这个新数据库?例如,假设我想添加一个新列.首先,我将它添加到我的localdb,进行一些测试,然后使用Add-Migration blah然后Update-Database进行迁移...然后我是否必须使用VS生成SQL脚本然后在生产数据库服务器上手动运行它?
我知道这不是很好,但是我不是将本地数据库与实体框架一起使用,而是将EF连接到真正的临时SQL Server数据库(测试数据库)并跳过所有这些localdb bull****?那么我可以使用代码优先迁移来管理它并保持一切同步吗?
我应该使用初始化器吗?我读过有关是否将这些用于生产数据库(如此)的相互矛盾的报告
公共类PricedNotesInitializer:MigrateDatabaseToLatestVersion <...,...> {}
令人沮丧的是,我了解这些东西的唯一方法是通过其他人的博客文章感到沮丧.我不明白为什么文档是如此垃圾.
谢谢你的帮助,抱歉咆哮.
您可以使用MigrateDatabaseToLatestVersion初始化程序,以便在部署后首次启动应用程序时自动完成对数据库的架构更改(如果可能,则不会丢失数据)。
如果发生数据丢失,您将得到一个错误,必须采取适当的措施。即使发生数据丢失,也可以将其覆盖以继续进行。
正如其他答案已经指出的那样,每个环境需要一个连接字符串,因此LocalDB适合开发,我什至鼓励它,因为它可以为需要开发的任何新开发人员自动创建和初始化(并带有测试数据)或仅通过从源代码构建和运行应用程序来对其进行调试。
除了加载解决方案,构建和运行代码库外,“设置新的开发环境”的经验应该尽可能地平稳,并尽量减少手工步骤,最好是零步骤。
您的部署和发布管道应该是自动的,并且不需要任何可能被错误执行,遗忘或更糟的手动命令。
如果您要小心或满足某些合规性要求,则可以手动执行,是对阶段性更改进行简单的是/否批准。
但是,在登台环境中进行自动化测试应该可以缓解这种情况,并且在成功完成后可以自动将其自动部署到生产环境中-);
针对生产手动运行更新数据库要求运行的任何计算机都可以访问生产数据库,这是一个不太可能或不建议的方案,如果您要交互式运行它。如果需要,您可以将其编写为自动部署管道的一部分,如果您希望对它进行更多控制,而不是使用初始化程序,则该初始化程序似乎最适合于较简单的项目(尽管看起来很简单)。
如果您在本地进行SQL express版本工作,那么您可以非常轻松地将其迁移到 SQL 生产服务器。SQL 生产服务器可以是 SQL Azure 或您自己的生产服务器。
A 1.您只需将您的更改local connection string为production1 并在 上运行以下命令package manager。然后,所有未更新的迁移脚本都将在生产环境中运行。
PM> Update-Database
Run Code Online (Sandbox Code Playgroud)
A 2:我不推荐这种方法。
A 3:你可以这样做:
Database.SetInitializer(new CreateDatabaseIfNotExists<YourDbContext>());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11014 次 |
| 最近记录: |