由於System.Data.OracleClient.dll從.NET Framework4.0之後已被棄用,所以我們無法在.NET Framework高版本中使用。一番搜索之後,發現好多文章提到.NET連接Oracle需要安裝客戶端,安裝驅動,各種配置...感覺無比麻煩。 Oracle Entit ...
由於System.Data.OracleClient.dll從.NET Framework4.0之後已被棄用,所以我們無法在.NET Framework高版本中使用。一番搜索之後,發現好多文章提到.NET連接Oracle需要安裝客戶端,安裝驅動,各種配置...感覺無比麻煩。
Oracle Entity Framework使用基本配置
Oracle官方推出了對於.NET的支持【Oracle Data Provider for .NET】,根據我的Visual Studio下載了一個對應版本的組件,安裝很簡單,沒有什麼選項。
安裝完之後,可以通過Visual Studio創建個應用,然後來體驗ODP.NET。
項目創建之後,選擇添加組件【 ADO.NET實體對象模型】
跟隨嚮導一路點擊,這裡我選擇資料庫先行
選擇【新建一個連接】->選擇【Oracle數據源】
配置資料庫庫連接屬性,我們需要資料庫的用戶名、密碼,連接方式選擇EZ連接,然後寫上你的資料庫所在伺服器的ip或者伺服器主機名(註:資料庫主機名和資料庫服務名不是同一個東西),Oracle埠一般預設為1521
配置完成後,修改連接串的名字,當然這不是必要的
最後選擇需要操作的資料庫表、存儲過程、視圖...
等待vsiual studio將代碼自動生成後,即可操作資料庫訪問
using (var dbContext=new OracleDbContext())
{
foreach (var item in dbContext.TMODALs)
{
Console.WriteLine("{0} {1}",item.C_ORG_CODE, item.C_USR_CODE);
}
}
Oracle.ManagedDataAccess
在ODP.NET中包含了Oracle.ManagedDataAccess.dll組件,它是.NET連接Oracle的驅動,有了它你不需要再安裝Oracle資料庫客戶端軟體就可以連接資料庫。你可以通過Nuget直接安裝這個dll組件
調用代碼和其他資料庫的寫法沒什麼區別,只要註意連接串中資料庫主機名(ip),資料庫服務名,賬號,密碼只要配置好幾本不會出什麼問題。
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ZHYW)));Persist Security Info=True;User ID=root;Password=root;";
using (OracleConnection oracleConnection = new OracleConnection(connectionString))
{
oracleConnection.Open();
string cmdText = "SELECT * FROM TMODAL";
OracleCommand oracleCommand = new OracleCommand(cmdText,oracleConnection);
OracleDataReader oracleDataReader = oracleCommand.ExecuteReader();
if (oracleDataReader.HasRows)
{
while (oracleDataReader.Read())
{
Console.WriteLine("{0} {1}", oracleDataReader[0], oracleDataReader[1]);
}
}
}
常見的一些錯誤
server explore 中的連接"*****" 具有相同的身份證明
這是由於伺服器資源管理器中已經存在該名字的連接,你可以通過【視圖】->【伺服器資源管理器】->【資料庫】中把同名連接刪除
ORA-12514:TNS:監聽程式當前無法識別連接描述符中請求的服務
這個有可能是你的資料庫服務名寫錯了,也就是資料庫連接串中的SERVICE_NAME