首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

顶者有分!Code First 共用数据库的有关问题

2012-12-26 
顶者有分!Code First 共用数据库的问题。前提:两项目都用 Code First,连接的是同一数据库。问题:当一个项目

顶者有分!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 依旧问题多多。


[其他解释]
如果项目变大了, 还是该换成 model first 吧。

你说的情况,就是非常适合 model first:
对同一个的数据库, 每个项目都有自己的 edmx
[其他解释]

引用:
如果项目变大了, 还是该换成 model first 吧。

你说的情况,就是非常适合 model first:
对同一个的数据库, 每个项目都有自己的 edmx

如果实在不行,我会考虑的。

引用:
是否可以采用一个项目主同步,更新成功后把Model复制给另外一个项目
第二个项目执行add-migration ,所有的语句注释掉,执行update-database

工作量非常大,还不如自己写一个数据仓储。
[其他解释]
MS在最新的 EF5 里已经解决这个每次都需要Recreate库的问题了
[其他解释]
这个真没接触 
[其他解释]
不错哦 写的很好 谢谢分享
[其他解释]
学习学习~帮顶~ 
[其他解释]
code first在公用数据库上着实是个让人蛋疼的问题,修改字段就要修改实体,修改实体就要修改迁移文件,傻瓜式的数据操作,跟传统的开发模式大相径庭,或许跟不上时代了。
[其他解释]


顶一下吧
[其他解释]
null
[其他解释]
null
[其他解释]
帮顶,但没用过EF。不太明白为什么每次都会重新drop掉全部表。判断修改部分表的结构是否可行。
[其他解释]
引用:
帮顶,但没用过EF。不太明白为什么每次都会重新drop掉全部表。判断修改部分表的结构是否可行。


正常情况不会,因为他两个context 冲突了
[其他解释]
null
[其他解释]
模型配置共用?
[其他解释]
我把系统切成 N 个模块,每个模块负责不同的功能,模块之间用接口进行调用及通讯。
所以才会有这个问题, EF 着实让人蛋疼。
[其他解释]
在谈论ORM(包括csdn上)的时候,我们都会举出“随之编程重构而随时需要增加或者删除Field/Property定义的问题。我猜微软的项目组不会傻逼到这种程度,以至于当你心在新增或者删除一个字段/属性的时候就去Drop Table而重建表吧?!那也太不可思议了!
[其他解释]
引用:
如果你说的 Code First(我至今还还没有机会用上——需要有几个菜鸟做项目时我才会给他们选择那类上手快的东西)就是这样,那么我绝对不会使用它。

我也觉得微软没这么弱智,一直在找资料,希望能有高人指点。
[其他解释]
回答不了你的问题,顶一下吧,
[其他解释]
引用:
MS在最新的 EF5 里已经解决这个每次都需要Recreate库的问题了

http://blog.csdn.net/cityhunter172/article/details/8062420
这是我写的博客《Code First Migrations 更新数据库结构的具体步骤》,我项目引用的就是 EF5,我目前正在看 EF6 的文档,希望能找到解决方案。
http://blogs.msdn.com/b/adonet/archive/2012/10/30/ef6-alpha-1-available-on-nuget.aspx
[其他解释]
Multi-Tenant Migrations - In previous versions of EF you were limited to one Code First model per database when using Migrations, this limitation is now removed. If you want to know more about how we enabled this, check out the feature specification on CodePlex.



以上是 EF6 的新功能,"limited to one Code First model per database",看到这句话,大家也许就明白了,EF5 以前的版本中做了限定,一个数据库只允许一个 Code First model。
[其他解释]
学习学习~帮顶~
[其他解释]
null

热点排行