gpt4 book ai didi

c# - 使用 Entity Framework 支持多个数据库服务器

转载 作者:行者123 更新时间:2023-11-29 03:34:00 25 4
gpt4 key购买 nike

我有一个与 SqlServer 一起运行的 ASP.NET MVC2 应用程序。我需要支持多个数据库(SqlServer、Mysql 和 Oracle)。所有数据库的架构都相同。 enter image description here

edmx 配置为与 SqlServer 一起运行,因此我添加了两个新的 ssdl 文件:一个用于 MYSQL,一个用于 Oracle。使用 SQLSERVER 我可以运行该应用程序,但是当我尝试在运行时将连接字符串和元数据设置为使用 MYSQL 配置时,它会生成异常: location of exception

我将如何改变 ssdl 来实现它?

最佳答案

我不知道如何专门为 MySql 做这件事,但这是我为实现对 Sql Server 和 Oracle 的多数据库支持所做的。我相信同样的方法也适用于 MySql。我希望您知道如何设置 Oracle 客户端配置。更改应用程序配置文件中的事件连接字符串是我需要做的以不同的数据库为目标的所有操作。

1) 针对 Sql Server 生成 edmx。

2) 为 Oracle 生成 .ssdl 和 .msl 文件。后者包含实体属性映射。需要在 ssdl for Oracle 中更改数据类型。参见 this详细信息的链接。 Oracle ssdl 文件需要具有正确的提供程序配置,在我的例子中:Provider="Oracle.ManagedDataAccess.Client"

3) 在您的应用程序配置文件中为 Oracle 数据库连接创建新的连接字符串。在此处正确键入 namespace 至关重要。下面是一个工作示例:

<add name="MyConnectionString"
connectionString="metadata=res://*/CustomDb.csdl|res://CustomDbProject/CustomDbNamespace.CustomDb.ssdl|res://CustomDbProject/CustomDbNamespace.CustomDb.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string=&quot;DATA SOURCE=MYDS;USER ID=****;Password=****;Max Pool Size=**;Connection Timeout=120&quot;"
providerName="System.Data.EntityClient"/>

4) 为上下文创建默认构造函数:

public CustomDb()
: base("name=MyConnectionString")
{
Configuration.ProxyCreationEnabled = false;
}

关于c# - 使用 Entity Framework 支持多个数据库服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26035143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com