oracle數字類型ef映射,Entity Framework 學習中級篇5—使EF支持Oracle9i - ♂風車車.Net - 博客園...

從Code MSDN上下載下來的EFOracleProvider不支持Oracle9i.但是,目前我所使用的還是Oracle9i。為此,對EFOracleProvider修改了以下,以便使其支持Oracle9i.

下面說說具體修改地方.(紅色部分為添加或修改的代碼部分)

一,修改EFOracleProvider

1,修改EFOracleProviderManifest.cs類文件,

internal const string TokenOracle9i = "9i";//add by xray2005

internal const string TokenOracle10g = "10g";

internal const string TokenOracle11g = "11g";

以下兩個地方,不修改也是可以的.但考慮目前我主要是使用9i,所以也就修改成9i了.

private EFOracleVersion _version = EFOracleVersion.Oracle9i; //EFOracleVersion.Oracle11g;

private string _token = TokenOracle9i; //TokenOracle10g;

2,修改EFOracleVersion.cs類文件,如下代碼所示:

namespaceEFOracleProvider

{

using System;

///

///This enum describes the current storage version

///

internal enum EFOracleVersion

{

Oracle9i = 9, //add by xray2005

///

///Oracle10g

///

Oracle10g = 10,

///

///Oracle 11g

///

Oracle11g = 11,

// higher versions go here

}

///

///This class is a simple utility class that determines the version from the

///connection

///

internal static class EFOracleVersionUtils

{

///

///Get the version from the connection.

///

/// current connection

/// version for the current connection

internal static EFOracleVersion GetStorageVersion(EFOracleConnection connection)

{

string serverVersion = connection.ServerVersion;

if (serverVersion.StartsWith("9."))

{

return EFOracleVersion.Oracle9i;//add by xray2005

}

else if (serverVersion.StartsWith("10."))

{

return EFOracleVersion.Oracle10g;

}

else if (serverVersion.StartsWith("11."))

{

return EFOracleVersion.Oracle11g;

}

throw new ArgumentException("Could not determine storage version; " +

"a valid storage connection or a version hint is required.");

}

internal static string GetVersionHint(EFOracleVersion version)

{

switch (version)

{

case EFOracleVersion.Oracle9i:

return EFOracleProviderManifest.TokenOracle9i;//add by xray2005

case EFOracleVersion.Oracle10g:

return EFOracleProviderManifest.TokenOracle10g;

case EFOracleVersion.Oracle11g:

return EFOracleProviderManifest.TokenOracle11g;

default:

throw new ArgumentException("Could not determine storage version; " +

"a valid storage connection or a version hint is required.");

}

}

internal static EFOracleVersion GetStorageVersion(string versionHint)

{

if (!string.IsNullOrEmpty(versionHint))

{

switch (versionHint)

{

case EFOracleProviderManifest.TokenOracle9i:

return EFOracleVersion.Oracle9i;//add by xray2005

case EFOracleProviderManifest.TokenOracle10g:

return EFOracleVersion.Oracle10g;

case EFOracleProviderManifest.TokenOracle11g:

return EFOracleVersion.Oracle11g;

}

}

throw new ArgumentException("Could not determine storage version; " +

"a valid storage connection or a version hint is required.");

}

internal static bool IsVersionX(EFOracleVersion storageVersion)

{

return storageVersion == EFOracleVersion.Oracle9i || storageVersion == EFOracleVersion.Oracle10g ||

storageVersion == EFOracleVersion.Oracle11g;//add by xray2005

}

}

}

二,使用EFOracleProvider

修改完畢后,編譯一下.如果是自己下載的源代碼編譯的,那么編譯后的EFOracleProvider自動已經在GAC注冊了.如果是手動注冊EFOracleProvider到GAC,那么命令如下:

gacutil –I“EFOracleProvider.dll”

其中gacutil.exe位于:系統盤符號:\Program Files\Microsoft SDKs\Windows\v6.0A\bin下面。

接下來,我們需要做的就是,把這個EFOracleProvider添加到Machine.config中.

第一步,找到Machine.config文件.該文件的位置在:

系統盤符號:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG下面.

第二步,用打開Machine.config文件,在DbProviderFactories配置節點,增加EFOracleProvider的配置,如下所示:

description=".Net Framework Data Provider for Odbc"

type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0,

Culture=neutral, PublicKeyToken=b77a5c561934e089" />

description=".Net Framework Data Provider for OleDb"

type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0,

Culture=neutral, PublicKeyToken=b77a5c561934e089" />

invariant="System.Data.OracleClient" description=".Net Framework Data

Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory,

System.Data.OracleClient, Version=2.0.0.0, Culture=neutral,

PublicKeyToken=b77a5c561934e089" />

invariant="System.Data.SqlClient" description=".Net Framework Data

Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory,

System.Data, Version=2.0.0.0, Culture=neutral,

PublicKeyToken=b77a5c561934e089" />

invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data

Provider for Microsoft SQL Server Compact"

type="System.Data.SqlServerCe.SqlCeProviderFactory,

System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral,

PublicKeyToken=89845dcd8080cc91" />

name="EF Oracle Data Provider" invariant="EFOracleProvider"

description="EF Provider for Oracle"

type="EFOracleProvider.EFOracleProviderFactory,EFOracleProvider,

Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />

第三步,保存即可.

接下來,簡單的介紹一下,如何使用這個EFOralceProvider.

第1步:在命令行窗口,將目錄定位到提示符, 系統盤符:\WINDOWS\Microsoft.NET\Framework\v3.5.如下所示(是我電腦上的目錄):

11835246_1.GIF

第2步,輸入相應的生成參數.如下圖所示:

11835246_2.GIF

將“data source=test;user id=xray;password= 123”成你自己的對應的參數即可.

確定之后,就可以看到生成的結果了,同時會有寫信息出來,如下示:

11835246_3.GIF

至此,EdmGen就為我們生成需要的文件.生成的文件如下所示:

lTestEFModel.csdl

lTestEFModel.msl

lTestEFModel.ssdl

lTestEFModel.ObjectLayer.cs

lTestEFModel.Views.cs

然后,通過EdmGen2工具, 使用剛剛生成的TestEFModel .csdl, TestEFModel .msl, TestEFModel .ssdl三個文件來生成一個模型.

命令如下:

Edmgen2.exe /toedmx TestEFModel.csdl TestEFModel.msl TestEFModel.ssdl

確定之后,該工具就會為我們生成一個TestEFModel.edmx文件了.

然后,把這個文件加入到我們的項目中,同時修改項目的App.Config文件連接字符串,如下所示:

connectionString="provider=EFOracleProvider;

metadata=res://*/TestEFModel.csdl|res://*/TestEFModel.ssdl|res://*/TestEFModel.msl;

Provider Connection String='data source=test;user id=xray;password=1111'"

providerName="System.Data.EntityClient" />

最后保存.

至此,修改EFOracleProvider并使用,介紹完畢。

最后提供幾個連接,以方便大家學習研究:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394896.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394896.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394896.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle 數據庫之最:你見過最高的 SQL Version 是多少?

Oracle數據庫中執行的SQL,很多時候會因為種種原因產生多個不同的執行版本,一個游標的版本過多很容易引起數據庫的性能問題,甚至故障。 有時候一個SQL的版本數量可能多達數萬個,以下是我之前在"云和恩墨大講堂”分享過的一個案…

mybatis傳參問題總結

一、 傳入單個參數 當傳入的是單個參數時&#xff0c;方法中的參數名和sql語句中參數名一致即可 List<User> getUser(int id);<select id"getUser" parameterType"java.lang.Integer" resultType"com.lee.test.pojo.User">select *…

C 怎么讀取Cpp文件_opencv從yaml文件中讀取矩陣(c++)

PS:由于我是新手&#xff0c;因此記錄的比較羅里吧嗦&#xff0c;本文也屬于一個沒有任何技術的編程積累。在SLAM系統中&#xff0c;經常需要從配置文件中讀取參數文件&#xff0c;讀取整型&#xff0c;浮點型都是比較常見的操作&#xff0c;在讀取矩陣卡了一下&#xff0c;記錄…

oracle中的判斷大小,sql語句判斷大小

如何用sql語句查看某個數據庫中的表的大小--讀取庫中的所有表名select name from sysobjects where xtypeu--讀取指定表的所有列名select name from syscolumns where id(select max(id) from sysobjects where xtypeu and name表名)獲取數據庫表名和字段sqlserver中各個系統表…

超越Android:探索Kotlin的應用領域

by Adam Arold亞當阿羅德(Adam Arold) 超越Android&#xff1a;探索Kotlin的應用領域 (Going beyond Android: exploring Kotlin’s areas of application) If you have written something in Kotlin, chances are that you wrote it for Android. Kotlin, however, has other…

3.SFB標準版前端安裝

SFB服務器準備部分&#xff1a;1.修改服務器名稱&#xff0c;sfb加入域&#xff0c;用域管理員賬戶登錄2.配置服務器IP地址&#xff0c;DNS3.安裝Windows組件Add-WindowsFeature NET-Framework-Core, RSAT-ADDS, Windows-Identity-Foundation, Web-Server, Web-Static-Content,…

向spark standalone集群提交任務

文檔鏈接 #切換到spark安裝目錄,執行下面一條命令,192.168.0.10是master的ip, examples/src/main/python/pi.py 是python 文件的路徑 ./bin/spark-submit --master spark://192.168.0.106:7077 examples/src/main/python/pi.py任務已經執行完畢,耗時10秒 轉載于:https://www.c…

SQLite學習手冊

一、聚合函數&#xff1a; SQLite中支持的聚合函數在很多其他的關系型數據庫中也同樣支持&#xff0c;因此我們這里將只是給出每個聚集函數的簡要說明&#xff0c;而不在給出更多的示例了。這里還需要進一步說明的是&#xff0c;對于所有聚合函數而言&#xff0c;distinct關鍵字…

oracle全局索引 效率,關于插入,全局索引和局部索引的情況,那種效率高

分區表上的索引表可以按range&#xff0c;hash&#xff0c;list分區&#xff0c;表分區后&#xff0c;其上的索引和普通表上的索引有所不同&#xff0c;oracle對于分區表上的索引分為2類&#xff0c;即局部索引和全局索引&#xff0c;下面分別對這2種索引的特點和局限性做個總結…

python excelwriter保存路徑_Python和Excel 終于可以互通了!!

點擊“開發者技術前線”&#xff0c;選擇“星標&#x1f51d;”在看|星標|留言, 真愛作者&#xff1a;小天真_5eed 鏈接&#xff1a;https://www.jianshu.com/p/6ecf414f3372今天為大家分享一篇使用python將大量數據導出到Excel中的技巧心得&#xff0c;可以讓Python和Excel…

nodejs 調用微服務器_無服務器NodeJS:構建下一個微服務的快速,廉價方法

nodejs 調用微服務器by Filipe Tavares由Filipe Tavares 無服務器NodeJS&#xff1a;構建下一個微服務的快速&#xff0c;廉價方法 (Serverless NodeJS: the fast, inexpensive way to build your next microservice) I love Node.js. I’ve re-discovered Javascript through…

(藍橋杯)2018JAVA B組 日志分析

日志統計 小明維護著一個程序員論壇。現在他收集了一份"點贊"日志&#xff0c;日志共有N行。其中每一行的格式是&#xff1a; ts id 表示在ts時刻編號id的帖子收到一個"贊"。 現在小明想統計有哪些帖子曾經是"熱帖"。如果一個帖子曾在任意一個長…

MySQL 導出數據

2019獨角獸企業重金招聘Python工程師標準>>> 1、導出整個數據庫 mysqldump -u 用戶名 -p 數據庫名 > 存放位置比如&#xff1a; mysqldump -u root -p project > c:/a.sql 2.導出一個表的結構&#xff0c;并且帶表中的數據 mysqldump -u 用戶名 -p 數據庫名 …

哎 心好累

雨天后的周六還要上班&#xff0c;避開了所有上班的交通方式&#xff0c;沒有比這更需要車的時候&#xff0c;哎&#xff0c;感覺心好累 好好努力買車吧&#xff0c;覺得再這樣只能是徒勞了。 困得和傻逼一樣 單片機又要換型號&#xff0c;后面一堆事兒&#xff0c;哎 再見-dsp…

Abbey加入了FreeCodeCamp團隊,擔任編輯

by Quincy Larson昆西拉爾森(Quincy Larson) Abbey加入了FreeCodeCamp團隊&#xff0c;擔任編輯 (Abbey is joining the freeCodeCamp team as an editor) Every article you’ve read here on the freeCodeCamp community Medium publication has been edited with care by a…

單片機STM8S測量電壓電路_單片機電路設計中的10個難點

單片機是嵌入式系統的核心元件&#xff0c;使用單片機的電路要復雜得多&#xff0c;但在更改和添加新功能時&#xff0c;帶有單片機的電路更加容易實現&#xff0c;這也正是電器設備使用單片機的原因。那么在單片機電路的設計中需要注意的難點有哪些&#xff1f;嵌入式ARM開發 …

oracle ebs 數據源,Oracle EBS環境下查找數據源(Form篇)

關于在Oracle EBS環境下如何查找數據源的文章幾年前就已經開始整理&#xff0c;但是其中關于OAF方面的一直沒有整理&#xff0c;導致這份文檔一直殘缺不全&#xff0c;有很多次同事都向我索要相關文檔都未能如愿以償&#xff0c;新的一屆培訓工作再次啟動&#xff0c;為了自己也…

net-speeder

有的同學反映自己的***速度慢&#xff0c;丟包率高。這其實和你的網絡服務提供商有關。據我所知一部分上海電信的同學就有這種問題。那么碰到了坑爹的網絡服務商&#xff0c;我們應該怎么辦呢&#xff1f; duangduang~~~~~~有請今天的主角&#xff1a;Net-Speeder登場&#xff…

linux 實用指令

通過init 來制定/切換不同的運行指令 查看linux 系統下&#xff0c;電腦的運行級別 vim /etc/inittab 如何找回丟失的root密碼&#xff1f; 進入到單用戶模式&#xff0c;然后修改root密碼 進入到單用戶模式&#xff0c;root不需要密碼也可以登錄 如果開機就是init 0 辦法&…

Atitit.異步的實現模式attilax大總結

Atitit.異步的實現模式attilax大總結 1.1. 函數回調(包括的future模式)1 1.2. 事件機制( 包括定時器 listeners 1 1.3. 中斷機制1 1.4. 訂閱機制 發布/訂閱 又稱"觀察者模式"&#xff08;observer pattern&#xff09;。1 1.5. Promises對象1 1.6. 輪詢1 2. 實現級別…