首页 新闻 会员 周边

ef core在不同的程序集下生成迁移文件时,会生成两份一模一样的文件

0
悬赏园豆:20 [待解决问题]

我的项目是DDD类型分层的,vs启动项目是web层,而dbContext类是在dal层。当我在PMC中使用ef core的add-migration生成迁移文件时,报错提示我需要再增加一个IDesignTimeDbContextFactory接口的实现,我照做了,于是我继续在PMC下生成迁移:
默认项目:Developer.web
命令:Add-Migration Init -O ../Developer.web/Migrations -P Developer.DAL -V
的确是生成了Migrations文件,但是在DAL层也生成了一模一样的Init.cs以及Design.cs和数据快照文件,而且,继续使用Add-Migrations命令时,还是依旧会在DAL层生成数据快照文件,这就不应该,按道理快照文件只会生成一份的。如果我删除了DAL层的数据迁移文件,那么每次Add-Migration都会生成全新的数据迁移文件(重新生成所有的数据库)。也就是说,efcore参照的数据快照文件并不是web层的migrations下的快找文件,而是dal层的快照。

问题补充:

DAL层的dbcontext:

DAL层生成的数据迁移文件(按道理并不应该生成)

web层的数据迁移文件

designtimedbcontextfactory的代码:

startup的代码:

又见阿郎的主页 又见阿郎 | 初学一级 | 园豆:163
提问于:2018-11-16 10:34
< >
分享
所有回答(1)
0

是的啊,EF又不是神仙,所以有些东西得靠你想办法。
比如就不要在DAL层运行迁移命令呗。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-11-16 10:38

你好,dbcontext就是dal层,这是历史设计的原因,我只是接受维护并开发这个项目的。efcore的数据迁移必须要在dbcontext的所在程序集。

支持(0) 反对(0) 又见阿郎 | 园豆:163 (初学一级) | 2018-11-16 10:42

@又见阿郎: 所以要你动脑筋。多看看EF文章你行的。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2018-11-16 10:44

@爱编程的大叔: 已经多动脑经了,昨晚加班搞到半夜。我得出的结论就是efcore的迁移是根据dal层的数据快照文件,而不是web层的快找文件。这个是根本问题,google也找了,并没有其余人遇到这种类似的情况

支持(0) 反对(0) 又见阿郎 | 园豆:163 (初学一级) | 2018-11-16 10:46

@又见阿郎: 没人解答你的问题啊,
那我说了, 简单的说,就是你的结论是对的啊,那就按照这个结论设计和组织你的项目。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2018-11-16 16:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册