顶者有分!Code First 共用数据库的问题。
前提:两项目都用 Code First,连接的是同一数据库。
问题:当一个项目执行 Update-Database ,会把另一个项目的 Table 全部 drop。
曾尝试过的步骤:
1、执行 Add-Migration 手动更新,将 DropTable 语句注释掉:两项目不能同时 Update-Database 成功,会提示有些 Table 已存在。
2、查看数据库,有个 dbo.__MigrationHistory,明白了两项目其实是共用了这个表,才出现混乱。将此表删除,问题也多多。
怎么样才能解决这个排他性?
不要告诉我,只能用不同的数据库登录名来限定,这不是我想要的答案。
------最佳解决方案-------------------- EF好蛋蛋疼
------其他解决方案-------------------- 用自己的Initializer替换默认的DropCreateDatabaseAlways初始化。
你也可以从DropCreateDatabaseAlways继承一个类重写它的Seed方法。
------其他解决方案-------------------- 引用: 前提:两项目都用 Code First,连接的是同一数据库。
问题:当一个项目执行 Update-Database ,会把另一个项目的 Table 全部 drop。 如果你说的 Code First(我至今还还没有机会用上——需要有几个菜鸟做项目时我才会给他们选择那类上手快的东西)就是这样,那么我绝对不会使用它。
从我很“小”的时候我就知道,一个有点经验、有大客户需要维护的数据库编程,它是需要自动升级数据库,而不是重建数据库!
当你升级的时候,结果程序吧数据库表 drop table 了,你还能使用这种东西?
------其他解决方案-------------------- 好吧,纯属顶贴!
------其他解决方案-------------------- Code First 非常不现实。
难道真有哪个公司用code表述数据库,而不需要建模?
------其他解决方案-------------------- 是否可以采用一个项目主同步,更新成功后把Model复制给另外一个项目
第二个项目执行add-migration ,所有的语句注释掉,执行update-database
------其他解决方案-------------------- 建模吧. 也比较直观.
------其他解决方案-------------------- 那就帮顶吧~!
------其他解决方案--------------------
不懂,帮顶
------其他解决方案-------------------- ef 5 不能同时有多个 context migrate,但可以同时使用多个 context。删掉历史表就行。migrate 和 使用 dbcontext 是不同的概念。
------其他解决方案-------------------- 我是用dataset 处理的。 用dataset填充数据 利用她的架构关系处理的。
------其他解决方案-------------------- 了解了解
------其他解决方案-------------------- 两个数据库做数据共享不就OK了
------其他解决方案-------------------- 学习 现在正在学ef
------其他解决方案-------------------- 没接触过。所以就帮不上忙了。
------其他解决方案-------------------- 引用: 用自己的Initializer替换默认的DropCreateDatabaseAlways初始化。
你也可以从DropCreateDatabaseAlways继承一个类重写它的Seed方法。
我已在初始化时设置关闭数据库的初始化,
public MyContext()
{
Database.SetInitializer<MyContext>(null);
}
但这只是解决不报下列错:
The model backing the 'MyContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
执行 Update-Database 依旧问题多多。