8

有什么变化还是它仍然不支持这个?例如加入 database1.dbo.Users 和 database2.dbo.Addresses

4

3 回答 3

4

如果您的数据库支持同义词,我实际上确实找到了一种使 EF 模型跨越多个数据库的方法。基本上你在 Database1 上设置 Database2 的同义词,为每个创建单独的 edmx 模型,然后合并 XML

如果您有兴趣,我在这里发布了使 edmx 文件跨越多个数据库的确切步骤,以及一个脚本,以便在发生变化时为您执行合并。

于 2011-05-24T20:11:48.777 回答
3

我认为所问的是您是否可以连接来自不同数据库的表,而不是不同的提供者,从而导致一个实体映射到来自不同数据库的两个或多个表或视图

如果您考虑一下,当您使用 Visual Studio 创建 EDM 模型时,它会要求您提供现有数据库,并且在完成创建模型后,它会生成一个 EF 连接字符串,该字符串是给定基础数据库连接字符串的内部地址。

例如:metadata=res:// /EFTestModel.csdl|res:// /EFTestModel.ssdl|res:// /EFTestModel.msl;provider=System.Data.SqlClient; 提供者连接字符串="数据源=.\;初始目录=EFTest;集成安全=True;MultipleActiveResultSets=True "*

所以每个模型只匹配一个数据库,只匹配一个连接字符串。

EF4 仍然不支持创建一个适用于 N 个存储模型的概念模型。至少任何内置提供程序都不支持这一点。也许在未来,这可以通过一个新的提供者来完成,该提供者结合了许多存储的支持(来自相同的提供者或不同的提供者)。

我还没有对它进行足够的研究,但也许Windows Server AppFabric(代号 Velocity)可能是跨越这个鸿沟的桥梁。

注意:我什至尝试手动编辑 EDM (edmx) 的 xml,以在 <edmx:StorageModels> 标记内插入第二个元素,但它与 EDM XML Schema 不匹配,因此 VS 会发出警告:错误 10021: Duplicated Schema element遭遇。

拉法奥尔特加 MAP2010

于 2010-05-07T11:21:57.790 回答
1

查看类似问题的答案:

实体框架 - 插入具有多个模型和数据库的实体

于 2011-05-02T12:20:07.570 回答