我的项目中有一个模型,它映射到我的数据库中的很多视图,但我需要映射到另一个数据库中的视图。
我该怎么做?我是否必须创建另一个模型?我不想,但如果必须,我会的。
答案 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);