在一个DBContext中处理多个模式

时间:2019-04-05 21:17:30

标签: c# entity-framework ef-code-first asp.net-core-2.0

我正在使用具有新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模式表将被忽略。

但是现在我有一个名为用户的新架构,它需要成为模型的一部分。

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

但是使用上面的代码从dbo模式中删除了表。在忽略notinapplication模式的同时在DBContext中具有两个模式的表的选项是什么?

如果确实需要创建不同的上下文,是否可以在一个查询中从多个数据库上下文中进行查询?

2 个答案:

答案 0 :(得分:2)

All you need to do to provide multiple values is to use the 'array syntax'.

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

In your case, you have to do

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

答案 1 :(得分:1)

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

 -Schema "dbo" -Schema "user"