【发布时间】:2010-04-17 20:31:05
【问题描述】:
有什么变化或者它仍然不支持这个? 例如加入 database1.dbo.Users 和 database2.dbo.Addresses
【问题讨论】:
标签: entity-framework entity-framework-4
有什么变化或者它仍然不支持这个? 例如加入 database1.dbo.Users 和 database2.dbo.Addresses
【问题讨论】:
标签: entity-framework entity-framework-4
如果您的数据库支持同义词,我实际上确实找到了一种使 EF 模型跨越多个数据库的方法。基本上你在 Database1 上设置 Database2 的 Synonyms,为每个创建单独的 edmx 模型,然后合并 XML
如果您有兴趣,我发布了使 edmx 文件跨越多个数据库 here 的确切步骤,以及在发生变化时为您执行合并的脚本。
【讨论】:
Synonyms 的任何限制。例如,如果您的同义词指向另一台服务器,那么您将受限于访问链接服务器的任何 SQL 规则。
我认为所问的是您是否可以连接来自不同数据库而不是不同提供者的表,从而导致一个实体映射到来自不同数据库的两个或多个表或视图。
如果您考虑一下,当您使用 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 (Codename Velocity) 可以成为跨越这个鸿沟的桥梁。
注意:我什至尝试手动编辑 EDM (edmx) 的 xml,以便在
拉法·奥尔特加 MAP2010
【讨论】: