我实际上找到了一种方法,可以使EF模型跨越多个数据库,如果您的数据库支持同义词。 基本上,在Database1上设置Synonyms到Database2,为每个创建单独的edmx模型,然后合并XML。如果你有兴趣,我在这里发布了确切的步骤来使一个edmx文件跨越多个数据库,以及一个脚本,可以在任何变化时对其进行合并。
我认为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
Synonyms
中存在的任何限制。例如,如果您的同义词指向另一个服务器,则您受到访问链接服务器的 SQL 规则的限制。 - Rachel