我不确定您打算如何做到这一点-如果我做对了,您会想保留one database (shared) in between number of web sites
-但是,每个站点都有自己的成员资格表,名称不同,前缀不同,对吗?
第一个问题是for each Db/table name change - you need a 'code to match'
- 即代码优先的实体和代码,Db 中的“迁移表” - 并且表都是同步的 - 所以它们都可以按照应有的方式一起工作。从这个意义上说,仅仅更改 Db 中的脚本或表名是行不通的。It has to be done at the level of attributes (as @Steven suggested) or fluent configuration.
在您的情况下,这意味着您需要以某种方式为每个站点“构建”单独的配置,将它们分别部署(代码)到每个站点 - 并构建一个mega Db
包含每个站点的所有小variants
部分合并在一起的站点。
这将很难管理 - 但你可以尝试(我上面描述的) - 我不知道它是否有效(因为这需要很多“基础设施”来尝试这个) - 但也许沿着这些路线...... .
- 放置
Table
属性(或通过流利的配置)
- 构建代码 - 为每个“改变”表名称 - 并重建(理想情况下,您可能需要使用一些工具,代码生成器来批量自动执行此操作 - 即您构建,外部复制文件,更改名称并重复)
- 还为每个案例(表名)构建“迁移” - 将迁移保存为文件 - 并
Update-Database -Script
为每个案例保存实际脚本(重要)。
- 保存每次迁移 - 或者我们可以说一个“脚本”来表示。
- 一旦完成 - 你需要
merge
迁移 - 脚本 - 进入one big master script
- 即删除相同的表集(当然只留下一个) - 并复制所有不同的成员表集。
- 从数据库中删除
migration table
- 因为那肯定会不同步并且不会让你做任何事情(或者我认为代码中还有一个标志可以忽略它,现在没有它)。有关详细信息,请参阅下面我的另一篇文章。
- 部署一个主数据库 - 使用您创建的脚本
- 将特定代码部署到每个站点。
- 祈祷一切顺利:)
必须有一些更聪明的东西 - 但另一方面,迁移不适用于这种情况,因此即使不是不可能,也很难做到这一点。
一些可能有帮助的一般信息...
如何与现有数据库同步迁移- 面向生产场景,保持 Db-s 和 CF 匹配。这不完全是您所需要的,但有详细的描述,解决这个问题的可能方法,这是我前段时间写的......
MVC3 和 Code First 迁移 - “自从创建数据库以来,支持‘blah’上下文的模型已经改变”
总结...
对我有用的是使用 Update-Database -Script
这将创建一个具有“迁移差异”的脚本,您可以将其作为 SQL 脚本手动应用到目标服务器数据库上(并且您应该插入正确的迁移表行等)。
如果这仍然不起作用 - 你仍然可以做两件事......(更多内部)......