【问题标题】:Joining multiple tables from different databases连接来自不同数据库的多个表
【发布时间】:2016-09-21 02:59:17
【问题描述】:

我正在开发 ASP.NET 核心应用程序,我正在使用实体框架与 SQL 服务器数据库进行交互。到目前为止,我使用Scaffold-DbContext 命令从 SQL Server 数据库创建新模型。即使我们想基于多个表创建DbContext,我也可以在上面的命令中使用-t 标志来实现。一切都发生在单个 SQL 数据库上。

Scaffold-DbContext "Server=XXXXXXXXX;Database=XXXXXXXX;User Id=XXXXX;Password:XXXXXX" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t Table1 Table2

Scaffold-DbContext parameters 命令中,我找不到指定不同数据库的选项。

在新场景中,我必须连接来自不同 SQL 数据库的 2 个表。有没有办法创建由来自不同数据库的 2 个表组成的模型。两个表都使用一对一的关系。

例如,DB1 有 table1,DB2 有 table2。有没有办法创建一个由这 2 个表(table1 和 table2)组成的DbContext

有没有其他方法可以实现来自 2 个不同数据库的 2 个表之间的连接?

【问题讨论】:

  • 任何版本的 EF 都不支持跨数据库连接。但是,您可以分别查询每个数据库,然后使用 linq 连接到对象。

标签: entity-framework entity-framework-core


【解决方案1】:

不,您不能使用 EntityFramework(6.x 和 Core)来做到这一点。每个数据库都有一个 DbContext,您只能在同一个 DbContext 中进行连接。

您可以创建一个视图并将该视图映射到您需要的模型,但 iirc.视图映射仍在 EntityFramework Core 的路线图上。不过可能适用于 EntityFramework 6.x。

编辑:

至少你不能用 Linq/Fluent api 做到这一点。你可以执行raw queries。问题:项目必须与模型完全匹配,模型不能有任何缺失的字段。到非实体的 Ad-hoc 映射在 EntityFramework Core 未来版本的路线图中

【讨论】:

  • 感谢@Tseng 的建议。将尝试使用原始查询。
  • 如果您使用的是SQL Server,也许您可​​以尝试SQL Server中的“同义词”,在其他数据库中创建表的“同义词”,从EF的角度来看它可以被视为本地表。不过我自己还没试过。
猜你喜欢
  • 2014-10-05
  • 2013-11-11
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
相关资源
最近更新 更多