【问题标题】:support multiple database servers with Entity Framework使用 Entity Framework 支持多个数据库服务器
【发布时间】:2014-11-20 00:33:57
【问题描述】:

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

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

我将如何改变 ssdl 来实现这一点?

【问题讨论】:

    标签: c# mysql oracle entity-framework edmx


    【解决方案1】:

    我不知道如何专门为 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 db 连接创建新的连接字符串。在此处正确键入名称空间至关重要。下面是一个工作示例:

    <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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 2013-05-10
      • 2014-06-24
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多