我有一個運行SqlServer的ASP.NET MVC2應用程序。我需要支持多個數據庫(SqlServer,Mysql和Oracle)。所有數據庫的模式都是相同的。 使用實體框架支持多個數據庫服務器
edmx配置爲與SqlServer一起運行,所以我添加了兩個新的ssdl文件:一個用於MYSQL,一個用於Oracle。 隨着SQLSERVER我可以運行應用程序,但是當我嘗試在運行時設置連接字符串和元數據與MYSQL配置它產生的異常:
我怎麼會去改變SSDL要做到這一點?
我有一個運行SqlServer的ASP.NET MVC2應用程序。我需要支持多個數據庫(SqlServer,Mysql和Oracle)。所有數據庫的模式都是相同的。 使用實體框架支持多個數據庫服務器
edmx配置爲與SqlServer一起運行,所以我添加了兩個新的ssdl文件:一個用於MYSQL,一個用於Oracle。 隨着SQLSERVER我可以運行應用程序,但是當我嘗試在運行時設置連接字符串和元數據與MYSQL配置它產生的異常:
我怎麼會去改變SSDL要做到這一點?
我不知道如何專門爲MySql做這件事,但這是我爲了實現對Sql Server和Oracle的多個數據庫支持所做的。我相信同樣的方法也適用於MySql。我希望你知道如何設置Oracle客戶端配置。更改應用程序配置文件中的活動連接字符串是我需要做的,以定位不同的數據庫。
1)生成針對Sql Server的edmx。
2)爲Oracle生成.ssdl和.msl文件。後者包含實體屬性映射。數據類型需要在Oracle的ssdl中進行更改。有關詳細信息,請參閱this鏈接。在我的情況下,Oracle ssdl文件需要具有正確的提供程序配置:Provider="Oracle.ManagedDataAccess.Client"
。
3)在應用程序配置文件中爲Oracle數據庫連接創建新的連接字符串。命名空間在這裏輸入正確至關重要。下面是一個工作示例:
<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="DATA SOURCE=MYDS;USER ID=****;Password=****;Max Pool Size=**;Connection Timeout=120""
providerName="System.Data.EntityClient"/>
4)創建上下文中的默認構造函數:
public CustomDb()
: base("name=MyConnectionString")
{
Configuration.ProxyCreationEnabled = false;
}