Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
Database ef core:数据库中已经有一个名为的对象_Database_Entity Framework_Asp.net Core_Entity Framework Core - Fatal编程技术网

Database ef core:数据库中已经有一个名为的对象

Database ef core:数据库中已经有一个名为的对象,database,entity-framework,asp.net-core,entity-framework-core,Database,Entity Framework,Asp.net Core,Entity Framework Core,您好,我正在开发一款使用ef core版本的aspnet core应用程序: “Microsoft.EntityFrameworkCore.Design”:“1.1.0”, Microsoft.EntityFrameworkCore.SqlServer:“1.1.0” 以及dotnet标准1.6.1 这是我的场景: 4只包含数据库的dbcontext DBSet或任何其他可在两个或三个上下文中显示,例如,文本包含表格A, BContext还包含tableA。但是它们中没有一个会包含所有的表,因为

您好,我正在开发一款使用ef core版本的aspnet core应用程序:

“Microsoft.EntityFrameworkCore.Design”:“1.1.0”, Microsoft.EntityFrameworkCore.SqlServer:“1.1.0”

以及dotnet标准1.6.1

这是我的场景:

  • 4只包含数据库的dbcontext
  • DBSet或任何其他可在两个或三个上下文中显示,例如,文本包含表格A, BContext还包含tableA。但是它们中没有一个会包含所有的表,因为我想让特定的上下文关注它的用途
  • 表之间有许多外键
  • 这会导致数据库中出现dup表,但为了解决这个问题,我做了以下工作

  • 创建一个MigrationDBContext以包含所有数据库集
  • 在此MigrationDBContext上添加迁移
  • 这是我得到的

  • 成功创建具有正确架构和名称的数据库和表
  • 调用时出错:serviceScope.ServiceProvider.GetService().Database.Migrate(); 错误消息:数据库中已存在名为“A”的对象
  • 不幸的是,ef core中的update database命令和-v将不显示sql脚本,脚本迁移只显示简单的CREATESQL语句

    我的问题是

  • 如何调试这种情况
  • 检查迁移文件,确实有一个向下和向上的方法,但是这个错误似乎是ef核心在迁移中只调用向上方法 文件,而不首先调用down,并将一些dup作为表 仍然存在。那么,是否存在控制迁移行为的开关
    最简单的方法是创建一个DbContext,其中包含所有实体集及其之间的关系。之后,您可以将存储逻辑与存储库分离。
    困难的方法是为每个上下文创建特定于上下文的迁移。如果需要添加存在于另一个上下文中的一组实体,则需要为该上下文创建一个空迁移。这是一种有点脏的方法。

    最简单的方法是创建一个DbContext,其中包含所有实体集及其之间的关系。之后,您可以将存储逻辑与存储库分离。 困难的方法是为每个上下文创建特定于上下文的迁移。如果需要添加存在于另一个上下文中的一组实体,则需要为该上下文创建一个空迁移。这有点脏