实体框架4和多个数据库

8

有什么变化或者它仍然不支持这个功能吗? 例如,连接database1.dbo.Users和database2.dbo.Addresses。

3个回答

4
我实际上找到了一种方法,可以使EF模型跨越多个数据库,如果您的数据库支持同义词。 基本上,在Database1上设置Synonyms到Database2,为每个创建单独的edmx模型,然后合并XML。
如果你有兴趣,我在这里发布了确切的步骤来使一个edmx文件跨越多个数据库,以及一个脚本,可以在任何变化时对其进行合并。

你长期使用过程中没有遇到任何问题吗?它完全兼容吗? - Luis Filipe
1
@LuisFilipe 我为此项目做的工作实际上已经被取消了,所以我从来没有机会完全测试所有东西。从我有机会测试的内容来看,唯一真正的限制就是Synonyms中存在的任何限制。例如,如果您的同义词指向另一个服务器,则您受到访问链接服务器的 SQL 规则的限制。 - Rachel

3
我认为ais想问的是是否可以连接来自不同数据库而非不同提供商的表,从而导致一个实体映射到来自不同数据库的两个或多个表或视图。
如果您考虑一下,在使用Visual Studio创建EDM模型时,它会要求您提供现有数据库,并在创建模型完成后生成EF连接字符串,该字符串在内部指向给定的底层数据库连接字符串。
例如:metadata=res:// / EFTestModel.csdl | res:// / EFTestModel.ssdl | res:// / EFTestModel.msl; provider = System.Data.SqlClient; provider connection string =“Data Source =。; Initial Catalog = EFTest; Integrated Security = True; MultipleActiveResultSets = True”*
因此,每个模型仅匹配一个数据库,仅匹配一个连接字符串。
EF4仍不支持创建一个概念模型,该模型可以与N个存储模型一起使用。至少这不受任何内置提供程序的支持。也许在将来,这可以通过一个新的提供程序来完成,该提供程序结合了许多存储的支持(来自相同的提供程序或不同的提供程序)。
我没有进行足够的研究,但也许Windows Server AppFabric(代号Velocity)可以成为通过此间隙的桥梁。
注意:我甚至尝试手动编辑EDM(edmx)的xml,以在标记内插入第二个元素,但它与EDM XML模式不匹配,因此VS会发出警告: 错误10021:遇到重复的模式元素。
Rafa Ortega MAP2010


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