• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    使用ef6創建oracle數據庫的實體模型遇到的問題及解決方案

    來源:懂視網 責編:小采 時間:2020-11-27 22:25:47
    文檔

    使用ef6創建oracle數據庫的實體模型遇到的問題及解決方案

    使用ef6創建oracle數據庫的實體模型遇到的問題及解決方案:解決方案中的數據層項目最初使用的是oracle 11g + ef5 創建的實體模型,在分頁時遇到了skip參數為0報錯的問題,沒有找到相關資料。 于是決定升級到ef6,在oracle官網中得知,Oracle Data Provider for .NET in ODAC 12c Release
    推薦度:
    導讀使用ef6創建oracle數據庫的實體模型遇到的問題及解決方案:解決方案中的數據層項目最初使用的是oracle 11g + ef5 創建的實體模型,在分頁時遇到了skip參數為0報錯的問題,沒有找到相關資料。 于是決定升級到ef6,在oracle官網中得知,Oracle Data Provider for .NET in ODAC 12c Release

    解決方案中的數據層項目最初使用的是oracle 11g + ef5 創建的實體模型,在分頁時遇到了skip參數為0報錯的問題,沒有找到相關資料。

    于是決定升級到ef6,在oracle官網中得知,Oracle Data Provider for .NET in ODAC 12c Release 3 開始支持ef6(https://docs.oracle.com/cd/E56485_01/win.121/e55744/release_changes.htm#CIHGIAEG)

    安裝步驟:

    1.安裝odac,下載地址http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html

    2.數據層項目的.net版本改成4.5以上,使用nuget安裝 EntityFramework 6 +Oracle.ManagedDataAccess +Oracle.ManagedDataAccess.EntityFramework,都安裝最新穩定版。

    安裝后app.config和web.config都會被加入如下配置項

    <configSections>
     <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
     <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
     </configSections>
     <entityFramework>
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
     <parameters>
     <parameter value="mssqllocaldb" />
     </parameters>
     </defaultConnectionFactory>
     <providers>
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
     <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
     </providers>
     </entityFramework>
     <system.data>
     <DbProviderFactories>
     <remove invariant="Oracle.ManagedDataAccess.Client" />
     <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
     </DbProviderFactories>
     </system.data>
     <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
     <publisherPolicy apply="no" />
     <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
     </dependentAssembly>
     </assemblyBinding>
     </runtime>
     <oracle.manageddataaccess.client>
     <version number="*">
     <dataSources>
     <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
     </dataSources>
     </version>
     </oracle.manageddataaccess.client>

    注意 entityFramework和 system.data中的版本號,nuget安裝后自動生成的一般沒問題,我在安裝之前把網上找的資料里的配置項放在里面了,但是版本號不一致,程序啟動不了,一直沒注意到版本號,

    找了好一會才發現是這兩個地方。

    3.然后就可以添加實體模型了。此時如果vs中顯示找不到與ef6 兼容的實體框架提供程序,需要將配置文件中的ef節的 <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />刪掉或者注釋掉,保存后再重新嘗試添加實體模型。

    添加實體模型時需要先不選擇數據庫里的表,即生成空模型,然后打開edmx文件,在模型瀏覽器中選中實體模型,在屬性中把DDL生成模板改成SSDLToOracle.tt (VS),數據庫生成工作流改成Generate Oracle Via T4 (TPT).xaml (VS)。

    這么做的原因是如果DDL生成模板使用默認項SSDLToOracle.tt ,oracle中的number(1,0)和number(2,0)類型的字段生成的實體屬性的類型會是int16,然后運行的時候報映射不匹配的錯誤(錯誤代碼2019)。

    報錯原因是oracle從ODP.NET 12.1.0.2開始為ef6采用新的默認類型映射,官網說明https://docs.oracle.com/cd/E56485_01/win.121/e55744/entityDataTypeMapping.htm#ODPNT8303,其中的 New Default Mappings 段。

    SSDLToOracle.tt模板生成的屬性的類型是number(1,0)對應boolean,number(2,0)對應byte,這個對應關系與新映射是一致的。

    附上ef5的映射

    Oracle Type Default EDM Type Custom EDM Type
    Number(1,0) Int16 bool
    Number(2,0) to Number(3,0) Int16 byte
    Number(4,0) Int16 Int16
    Number(5,0) Int16 Int32
    Number(6,0) to Number(9,0) Int32 Int32
    Number(10,0) Int32 Int64
    Number(11,0) to Number(18,0) Int64 Int64
    Number(19,0) Int64 Decimal

    總結

    以上所述是小編給大家介紹的使用ef6創建oracle數據庫的實體模型遇到的問題及解決方案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    使用ef6創建oracle數據庫的實體模型遇到的問題及解決方案

    使用ef6創建oracle數據庫的實體模型遇到的問題及解決方案:解決方案中的數據層項目最初使用的是oracle 11g + ef5 創建的實體模型,在分頁時遇到了skip參數為0報錯的問題,沒有找到相關資料。 于是決定升級到ef6,在oracle官網中得知,Oracle Data Provider for .NET in ODAC 12c Release
    推薦度:
    標簽: 實體 問題 數據庫
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品多毛少妇人妻AV免费久久 | 精品亚洲成a人片在线观看少妇| 国产精品久久自在自线观看| 久久久久久国产精品免费免费| 国产精品久久一区二区三区| 亚洲综合精品香蕉久久网 | 国内精品免费在线观看| 亚洲精品乱码久久久久久按摩| 国产在线观看高清精品| 青青草国产精品久久久久| 久久久精品人妻一区二区三区四| 久久精品国产精品亚洲下载| 欧美精品免费线视频观看视频| 人妻精品久久无码区| 亚洲国产精品嫩草影院久久| 国产一在线精品一区在线观看| 真实国产乱子伦精品免费| 国产精品久久久久久| 久久国产精品成人片免费| 亚洲精品无码久久千人斩| 拍国产真实乱人偷精品| 国产精品一级AV在线播放| 91亚洲国产成人久久精品网址| 久久se精品一区精品二区| 成人区人妻精品一区二区不卡网站 | 无码人妻精品一区二区| 亚洲欧美日韩另类精品一区二区三区 | 亚洲国产午夜中文字幕精品黄网站| 久久久久人妻一区精品| 久久99精品久久久久久水蜜桃| 精品a在线观看| 久久久这里有精品中文字幕| 久久久精品国产亚洲成人满18免费网站| 国产精品美女网站在线观看| 97精品人妻一区二区三区香蕉 | 99久久国产综合精品网成人影院| 国产精品涩涩涩视频网站| 久久久久99精品成人片试看 | 精品久久久久久无码人妻热| 精品国内自产拍在线观看 | 成人精品在线视频|