EF模型映射多个数据库

4

我在项目中有一个模型,它映射到数据库中的许多视图,但是我需要映射到另一个数据库中的视图。

我该怎么做?我必须创建另一个模型吗?如果必要,我会这样做,但我不想这样做。

3个回答

3

同一模型无法从两个不同的数据库获取数据。最简单的方法是在相同的数据库中创建一个视图,调用并返回来自其他数据库的数据,即内部调用外部数据库视图的抽象视图。


哦,我多么希望能够创建一个视图,并使用来自其他数据库的数据。事实上,我本来想这样做的,但是有人告诉我这种可能性对我来说是被禁止的。 :P - khr055

2
如果您的数据库支持同义词,您可以设置一个同义词到另一个数据库,并将edmx定义与第一个数据库的定义合并。我在这里写了如何做:这里
基本上,您最终会得到两个edmx文件和一个脚本,将两个edmx文件合并成一个可工作的edmx文件。使用同义词引用另一个数据库而无需完整数据库路径。

0
如果您在Entity Framework中使用Code First方法,以下是如何将EF实体映射到来自其他数据库的表格的方法:
需要在您的数据库中运行的SQL脚本以创建来自其他数据库的表格的同义词:
CREATE SYNONYM OtherDatabaseTableSynonym FOR otherdatabase.dbo.otherdatabasetable

Fluent API 中的 Entity Framework 映射:

modelBuilder.Entity<OtherDatabaseTableEntity>().ToTable("OtherDatabaseTableSynonym").HasKey(x => x.id);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接