在一个DBContext中处理多个模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在一个DBContext中处理多个模式相关的知识,希望对你有一定的参考价值。

我正在使用一个新的ASP.Net Core 2.0应用程序的现有数据库。该数据库有两个模式,dbo和notinapplication。我不想创建notinapplication架构表的模型。所以我在包管理器中使用以下代码,它工作正常。

Scaffold-DbContext "Server=localhost; Database=TestServer; Trusted_Connection=True; 
MultipleActiveResultSets=true;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
-UseDatabaseNames -Force -Context "DbContext" -Schema "dbo"

这样我只能在DbContext中从dbo获取表,并忽略notinapplication模式表。

但是现在我有了一个名为user的新模式,需要成为模型的一部分。

Scaffold-DbContext "Server=localhost; Database=TestServer; Trusted_Connection=True; 
MultipleActiveResultSets=true;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
-UseDatabaseNames -Force -Context "DbContext" -Schema "user"

但是使用上面的代码消除了dbo模式中的表。我可以选择在DBContext中同时拥有两个模式的表,同时忽略notinapplication模式。

如果我确实必须创建不同的上下文,是否可以在一个查询中从多个DB上下文进行查询?

答案

要提供多个值,您需要做的就是使用'数组语法'。

-Schema "schema1","schema2","schema3"

在你的情况下,你必须这样做

Scaffold-DbContext "Server=localhost; Database=TestServer; Trusted_Connection=True; 
MultipleActiveResultSets=true;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
-UseDatabaseNames -Force -Context "DbContext" -Schema "dbo","user"
另一答案

你可以通过这种方式多次使用job参数来执行-Schema:/

 -Schema "dbo" -Schema "user"

以上是关于在一个DBContext中处理多个模式的主要内容,如果未能解决你的问题,请参考以下文章

具有多个 MySql 模式的实体框架多个 DbContext

实体框架和多个模式

使用具有多个 DB 模式但使用一个 DBContext 的 Entity Framework 6

C# 实体框架 DBContext

如何在具有存储库模式的实体框架中伪造 DbContext.Entry 方法

在 ViewModel 中具有静态 DbContext 的 WPF 应用程序