Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有两个数据库的实体框架(完全不同的模式)_C#_Entity Framework_Webforms - Fatal编程技术网

C# 具有两个数据库的实体框架(完全不同的模式)

C# 具有两个数据库的实体框架(完全不同的模式),c#,entity-framework,webforms,C#,Entity Framework,Webforms,我对实体框架非常陌生,我正在尝试做一些类似以下场景的事情 我正在从应用程序创建ASP.netweb。该网站需要连接两个模式完全不同的数据库 我不知道基本结构应该是怎样的 我想在类库上有EF。由于我的知识较少,请给我一些指导。如果您仔细考虑一下,当您使用Visual Studio创建EDM模型时,它会要求您提供一个现有数据库,当完成创建模型时,它会生成一个EF连接字符串,该字符串在内部指向给定的基础数据库连接字符串 例如:元数据=res:///EFTestModel.csdl|res:///EFT

我对实体框架非常陌生,我正在尝试做一些类似以下场景的事情

我正在从应用程序创建ASP.netweb。该网站需要连接两个模式完全不同的数据库

我不知道基本结构应该是怎样的


我想在类库上有EF。由于我的知识较少,请给我一些指导。

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

例如:元数据=res:///EFTestModel.csdl|res:///EFTestModel.ssdl|res:///EFTestModel.msl;provider=System.Data.SqlClient;提供程序连接字符串=“数据源=。\;初始目录=EFTest;集成安全性=True;MultipleActiveResultSets=True”*

所以每个模型只匹配一个数据库,一个连接字符串

EF4仍然不支持创建一个可用于N个存储模型的概念模型。至少任何内置提供程序都不支持这一点。也许在将来,这可以通过一个新的提供程序来实现,该提供程序结合了对许多存储的支持(来自相同的提供程序或不同的提供程序)

我还没有对此做足够的研究,但也许Windows Server AppFabric(代号Velocity)可以成为跨越这一鸿沟的桥梁


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

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

由于您使用的是两个不同的数据库,唯一可行的选择是创建两个单独的概念模型。即使您能够将两个不同的数据库合并到一个概念模型中,维护数据库的大小也是一件痛苦的事情

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

例如:

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


请查看。

您在这两个数据库之间执行什么操作?@scheien-这两个数据库都是独立的数据库。这些数据库之间不会发生任何事情。我只想显示这两个数据库中的数据。因此,我建议您创建两个概念模型,每个数据库一个。如果我使用两个类库项目来处理这两个数据库,可以吗?(如果这个问题太愚蠢,请原谅)它可以按照您的意愿工作。最好将其分为两个项目,因为您可能还想在其中放置一些AddEdit模型。EF4相当旧,当前版本为6.1.0.:-)也可以使用一个上下文连接到具有相同结构的数据库。您还可以在运行时通过使用或实例化
ObjectContext
来实现这一点。