<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Petapoco 連接oracle11g 自動生成poco時遇到的問題

      偶爾在園子里看到.net的輕量級ORM框架Petapoco的介紹,覺得很有趣。相關介紹:PetaPoco:適用于.NET的微型ORM

      正好最近有個C#+Oracle11g的項目,想趁此機會試試用petapoco來做數(shù)據(jù)層的框架。

      在配置步驟和遇到的問題,記錄如下。

      1. 首先配置ODP.net,使得可以通過C#來連接Oracle。

      配置ODP.net的方法請參考我之前的博客:C# 連接Oracle(利用ODP.net,不安裝oracle客戶端)

      2. 安裝Petapoco

      安裝Petapoco,首先得安裝Nuget,可以通過VisualStudio2010的Extention Manager來搜索,并安裝。

      image

      安裝好后,打開Tools –> Library Package Manager –> Package Manager Console 如下圖

      image

      在命令行后輸入命令: PM> Install-Package petapoco就可以完成安裝。

      image

      安裝完后,工程里會多出一個Models文件夾和一些文件。其中的Database.tt就是用來自動生成poco的T4模板。

      image

      3. 利用Petapoco的Database.tt生成poco時的問題一:"Failed to load provider Oracle.DataAccess.Client”

      一切準備好后,就在Database.tt中填寫ConnectionStringName的名稱,然后保存Database.tt,應該就自動生成Database.cs中的poco代碼了。

      Database.tt中修改的部分

      image

      app.config中ConnectionStringName的配置如下:

      image 

      滿以為可以很順利的生成poco代碼,結果事與愿違,保存Database.tt后出現(xiàn)了2個警告,Database.cs沒有生成成功。

      image

      警告1(上圖中選中的部分)很好改,只要將petapoco安裝時生成的文件PetaPoco.Core.ttinclude的第一行

      <#@ template language="C#v3.5" hostspecific="True" #>

      修改為:<#@ template language="C#" hostspecific="True" #>

      警告2就是那個"Failed to load provider Oracle.DataAccess.Client“的錯誤,幾乎折騰了我一個晚上。

      C#明明已經(jīng)可以連上oracle并取得數(shù)據(jù)了,為什么T4模板生成poco時仍然說找不到Data Provider呢?

      最后終于找到了原因:

      原來我安裝的ODP.net中的Oracle.DataAccess.dll是.net Framework2.0版本的,

      因此Oracle.DataAccess相關的provider信息只在C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG中的machine.config里面有記錄。

      在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config中的machine.config里面沒有記錄。

      而我測試用的工程是針對.net Framework4.0的WPF工程,因此在C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config中的machine.config里面沒有找到相應的Provider信息。

      于是我將~\v2.0.50727\CONFIG中的machine.config里面的Oracle.DataAccess相關的provider信息拷入~\v4.0.30319\Config中的machine.config的相應位置。

      我的~\v4.0.30319\Config中的machine.config的相應信息如下:

      <system.data>
      	<DbProviderFactories>
      	<add name="Microsoft SQL Server Compact Data Provider" 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"/>
      	<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342" />
      	</DbProviderFactories>
      </system.data>

      上面Oracle Data Provider for .NET的信息是從~\v2.0.50727\CONFIG中的machine.config里拷出來的。

      重啟visualstudio2010后再保存Database.tt來生成poco。

      警告變成了下面的"Failed to read database schema”

      4. 利用Petapoco的Database.tt生成poco時的問題二:"Failed to read database schema”

      Petapoco的T4模板總算可以連上oracle了,折騰了好長時間,試了網(wǎng)上的好多方法,總算找到原因了(machine.config的問題)。

      對于"Failed to read database schema”,我覺得可能是Database.tt在Oracle11g上的一個bug。

      修改起來也很簡單,只要注釋掉PetaPoco.Core.ttinclude中的兩行即可。(大約是1164和1165行)

      image

      通過調試,發(fā)現(xiàn)上圖中取出的rdr中并沒有["TABLE_SCHEMA"]和["TABLE_TYPE"]的信息,所以生成poco時報錯了。

      將上面兩行注釋掉就可以生成poco了。

      生成poco后,可以利用petapoco提供API,方便的操作數(shù)據(jù)庫了。具體使用方法可以參考http://www.toptensoftware.com/petapoco/

      PS. PetaPoco確實輕量,沒有任何dll,只有一個PetaPoco.cs的源碼文件。如果對性能要求比較苛刻,但又想使用ORM,那么PetaPoco是個很好的選擇。

           據(jù)說它的性能還能進一步提升,希望大家能關注一下它。

      posted @ 2011-07-12 23:46  wang_yb  閱讀(6000)  評論(12)    收藏  舉報
      主站蜘蛛池模板: 国产超碰人人爽人人做| 天天躁日日躁狠狠躁中文字幕| 婷婷丁香五月激情综合| 精品国产一区二区亚洲人| 蜜桃视频一区二区在线观看| 洪洞县| 久久视频这里只精品| 中文字幕无码视频手机免费看 | 欧美福利在线| 国产毛片精品av一区二区| 骚虎三级在线免费播放| 亚洲AV日韩精品久久久久| 欲色欲色天天天www| 日韩精品一二区在线观看| 大香网伊人久久综合网2020| 男女动态无遮挡动态图| 久热色视频精品在线观看| 永久免费无码av在线网站| 97亚洲熟妇自偷自拍另类图片| 国产精品色内内在线播放| 成年午夜免费韩国做受视频| 蜜桃臀av在线一区二区| 男人狂桶女人出白浆免费视频| 久9re热视频这里只有精品免费| 推油少妇久久99久久99久久| 国产精品久久久久7777| av午夜久久蜜桃传媒软件| 亚洲av永久一区二区| 亚洲成人精品综合在线| 国产成人人综合亚洲欧美丁香花| 国产精品无码久久久久AV| 男女扒开双腿猛进入爽爽免费看| 五月天天天综合精品无码| 开心激情站开心激情网六月婷婷| 亚洲精中文字幕二区三区| 欧美人与动牲交A免费观看| 亚洲国产成人久久综合区| 国产精品无码不卡在线播放| 日本免费一区二区三区日本| 精品视频在线观看免费观看| 亚洲深夜精品在线观看|