Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在同一解决方案中的两个不同项目中迁移多个DBContext_C#_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# 在同一解决方案中的两个不同项目中迁移多个DBContext

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

我在同一个解决方案中有两个独立的项目。一个是windows服务,另一个是ASP.Net应用程序。该解决方案没有单独的数据层。这些项目与它自己的独立数据库通信。在第二个项目中,即web应用程序中,当我尝试在“PackageManager控制台”中使用以下命令执行启用迁移时,我得到一个错误

命令:

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应用程序中。迁移用于动态初始化和更新数据库,以便随着模型的更改,数据库也随之更改。