C# 在同一解决方案中的两个不同项目中迁移多个DBContext
我在同一个解决方案中有两个独立的项目。一个是windows服务,另一个是ASP.Net应用程序。该解决方案没有单独的数据层。这些项目与它自己的独立数据库通信。在第二个项目中,即web应用程序中,当我尝试在“PackageManager控制台”中使用以下命令执行启用迁移时,我得到一个错误 命令:C# 在同一解决方案中的两个不同项目中迁移多个DBContext,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,我在同一个解决方案中有两个独立的项目。一个是windows服务,另一个是ASP.Net应用程序。该解决方案没有单独的数据层。这些项目与它自己的独立数据库通信。在第二个项目中,即web应用程序中,当我尝试在“PackageManager控制台”中使用以下命令执行启用迁移时,我得到一个错误 命令: enable-migrations -ContextTypeName ServicesMock.Data.MockContext - MigrationsDirectory:MockMigrations
enable-migrations -ContextTypeName ServicesMock.Data.MockContext -
MigrationsDirectory:MockMigrations
该错误引用了第一个项目,并表示在程序集“我的解决方案中的第一个项目的程序集”中找不到上下文类型“ServicesMock.Data.MockContext”
我如何才能找到这一点,以便迁移命令可以指向相关的项目
我指的是创建命令
我也试着改变启动项目
更新(添加本节)
更正了在PackageManager控制台中未选择正确默认项目的问题
在第一个项目(Windows服务)中,Application.config文件包含该项目的dbcontext
<connectionStrings>
<add name="ApplicationDbContextConnection" connectionString="data source=abc;initial catalog=serviceDB;user id=;password=;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient"/>
</connectionStrings>
第二个项目(Web应用程序)的目的是模拟第一个项目中使用的一些外部API引用。它没有application.config,而是web.config
它有自己的DbContext。我在web.config中添加了连接字符串,它是
<connectionStrings>
<add name="MockContext" connectionString="Data Source=abc;Initial Catalog=mockDB;Persist Security Info=True;User ID=;Password=" providerName="System.Data.SqlClient" />
</connectionStrings>
但是现在,当我尝试EF迁移第二个项目(Web应用程序)时,我得到一个错误“在应用程序配置文件中找不到名为“MockContext”的连接字符串”。但是Web应用程序不使用app.config文件。它是指第一个项目吗?并且您在Package Manager控制台中将默认项目更改为正确的项目?@user10728126哦,我没有这样做。现在我试过了。但是我得到了一个新的错误“在应用程序配置文件中找不到名为“MockContext”的连接字符串。”。但是我在项目的web.config中有连接字符串。我应该把它放在其他地方吗?看起来你在试图模拟你的dbcontext,如果是这样的话,你不应该需要连接字符串。我真的不知道,因为你没有发布任何代码。你在做单元测试吗?你能把它们贴出来吗?现在我很困惑。当你说“模拟一些外部API引用”时,你是在设置单元测试吗?如果是这样,它们不应该出现在web应用程序中,而是应该在类库项目中使用moq之类的模拟框架来完成。如果您只是设置一些HTTP方法(GET、PUT、POST等)来测试API调用,那么web应用程序是有意义的,但您不应该运行迁移。只需手动将模型和dbcontext从其他项目添加到web应用程序中。迁移用于动态初始化和更新数据库,以便随着模型的更改,数据库也随之更改。