繁体   English   中英

具有两个数据库的实体框架(完全不同的架构)

[英]entity framework with two databases (completely different schemas )

我对实体框架非常陌生,并且正在尝试执行以下方案。

我正在应用程序创建ASP.net Web 该网站需要连接到两个架构完全不同的数据库。

我不知道基本结构应该如何。

我虽然在类库上有EF 由于我所掌握的知识较少,请指导我。

由于您使用的是两个不同的数据库,因此唯一可行的选择是创建两个单独的概念模型。 即使您能够将两个不同的数据库合并为一个概念模型,也很难维护,因为数据库的大小是可以提及的。

这两个模型可以驻留在同一项目中的单独文件夹中,以获取不同的名称空间。

例如:

Company.MyApp.DataModel
Company.MyApp.DataModel.Model1
Company.MyApp.DataModel.Model2

然后,您可以在这两个模型的上面放置一个新层,以完成所有繁重的工作,如果需要,甚至可以使它们看起来像一个数据库,或者将两个模型中的实体的数据合并到DTO或类似的东西中。

查看存储库模式

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

例如:metadata = res:///EFTestModel.csdl | res:////EFTestModel.ssdl | res:///EFTestModel.msl; provider = System.Data.SqlClient; provider连接字符串=“ Data Source =。\\;初始目录= EFTest;集成安全性= True; MultipleActiveResultSets = True“ *

因此,每个模型仅匹配一个数据库,仅匹配一个连接字符串。

EF4仍然不支持创建一个可与N个存储模型一起使用的概念模型。 至少任何内置提供程序都不支持此功能。 也许将来可以通过新的提供程序来完成,该提供程序结合了许多存储(来自相同提供程序或不同提供程序)的支持。

我尚未对此进行足够的研究,但也许Windows Server AppFabric(代号Velocity)可能是克服这一差距的桥梁。

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

由于数据库已经存在,因此您将使用模型优先方法。 您将需要为两个数据库创建两个edmx。 您可以创建一个模型项目,在app.config文件中可以为edmx拥有连接字符串,然后创建edmx。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM