EF模型映射多个数据库

时间:2011-02-10 16:27:29

标签: entity-framework

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

我该怎么做?我是否必须创建另一个模型?我不想,但如果必须,我会的。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

如果您的数据库支持同义词,您可以设置其他数据库的同义词,并将edmx定义与第1个数据库的定义合并。我写了如何做here

基本上,您最终会得到两个edmx文件,以及一个将两者合并到一个正在运行的edmx文件中的脚本。同义词用于引用另一个数据库而不需要完整的数据库路径。

答案 2 :(得分:0)

如果您在Entity Framework中使用代码优先方法,那么以下是如何将EF实体映射到其他数据库中的表:

需要在数据库中运行以从其他数据库创建表的同义词的SQL脚本:

CREATE SYNONYM OtherDatabaseTableSynonym FOR otherdatabase.dbo.otherdatabasetable

(Fluent API)中的实体框架映射:

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