实体框架4和多个数据库

时间:2010-04-17 20:31:06

标签: entity-framework entity-framework-4

有什么变化或者它仍然不支持这个? 例如,join database1.dbo.Users和database2.dbo.Addresses

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

如果您考虑一下,当您使用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(Codename Velocity)可能是解决这个差距的桥梁。

注意:我甚至尝试手动编辑EDM(edmx)的xml,以在< edmx:StorageModels>中插入第二个元素。标签,但它与EDM XML Schema不匹配,所以VS警告它: 错误10021:遇到重复的架构元素。

Rafa Ortega MAP2010

答案 2 :(得分:1)