【发布时间】:2014-09-14 06:03:34
【问题描述】:
我在 ASP.NET 5 项目中使用 EF6。我使用 ASP.NET Identity 作为身份验证机制的地方。正如任何人都会做的那样,我在一个单独的 dll 项目中对我的域对象进行了建模,并且对于数据访问逻辑,我有一个单独的项目。此数据项目包含 EF 迁移、域模型的 DbContext、存储库和工作单元。
我有一个由 ASP.NET 控制器联系的服务层,该服务层将与数据层通信并执行所需的操作。
在主 ASP.NET web 项目中,我有默认的 DbContext,它与 Identity 及其迁移相关。
拥有两个 DbContext 会以某种方式阻止我自动更新数据库。如果在为模型更改创建迁移后我只有一个 DbContext,它将在我第一次尝试访问该网站时自动运行。这不会再发生了,我总是必须手动运行“update-database”命令。
我现在的一个解决方案是在我的数据项目中添加对“Microsoft.AspNet.Identity.EntityFramework”的引用,并使用包含我的域表的身份上下文。但是在我的数据项目中添加 ASP.NET 引用是我不想做的事情,除非我没有其他选择。因为数据层甚至不直接与网络层通信。
尽管 Scott Allen 的 this 视频讨论了这个问题,但并未提出解决方案。
【问题讨论】:
-
嗨 Geetanga,我和你有相同的项目,在这里我遇到了几乎相同的问题:如果我在包管理控制台中的两个项目之间切换,我可以更新两个数据库。但是如果我将项目发布到天蓝色,只有 dll 项目的迁移被执行,web 项目中的迁移(其中包含 identityContext)没有运行迁移的选项。您能否详细介绍一下您如何使用 DBMigrator 更新数据库?谢谢
标签: asp.net-mvc entity-framework code-first asp.net-identity dbcontext