从不同的数据库加入多个表

时间:2016-09-20 18:12:08

标签: entity-framework entity-framework-core

我正在使用ASP.NET核心应用程序,我正在使用Entity Framework与SQL Server数据库进行交互。到目前为止,我使用Scaffold-DbContext命令从SQL服务器数据库创建新模型。即使我们想要基于多个表创建DbContext,我也可以使用上面命令中的-t标志来创建Scaffold-DbContext "Server=XXXXXXXXX;Database=XXXXXXXX;User Id=XXXXX;Password:XXXXXX" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t Table1 Table2 。单个SQL数据库上发生的一切。

DbContext

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

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

例如,DB1有table1,DB2有table2。有没有办法创建一个rah.rahTermDate = new List<RawACAHireTermDates>(); for (int i = 0; i < 5; i++) { RawACAHireTermDates rahd = new RawACAHireTermDates(); rahd.RawHireDate = Convert.ToDateTime(GetCellValue(GetCell(sheetData, Cells[i, k], j), workbookPart, false, true)); rahd.RawTermDate = Convert.ToDateTime(GetCellValue(GetCell(sheetData, Cells[i, (k + 1)], j), workbookPart, false, true)); rah.rahTermDate.Add(rahd); // rah.rahTermDate = new List<RawACAHireTermDates> { rahd }; <-- this line was the problem } ,它由这两个表(table1和table2)组成?

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

1 个答案:

答案 0 :(得分:1)

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

您可以创建视图并将视图映射到您需要的模型,但是iirc。视图映射仍然是EntityFramework Core的路线图。可以使用EntityFramework 6.x。

修改

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

的路线图