最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用ef6創(chuàng)建oracle數(shù)據庫的實體模型遇到的問題及解決方案

 更新時間:2017年11月09日 11:37:24   作者:ohmycode  
這篇文章主要介紹了使用ef6創(chuàng)建oracle數(shù)據庫的實體模型遇到的問題及解決方案,需要的朋友可以參考下

解決方案中的數(shù)據層項目最初使用的是oracle 11g + ef5 創(chuàng)建的實體模型,在分頁時遇到了skip參數(shù)為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.數(shù)據層項目的.net版本改成4.5以上,使用nuget安裝 EntityFramework 6 +Oracle.ManagedDataAccess +Oracle.ManagedDataAccess.EntityFramework,都安裝最新穩(wěn)定版。

安裝后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安裝后自動生成的一般沒問題,我在安裝之前把網上找的資料里的配置項放在里面了,但是版本號不一致,程序啟動不了,一直沒注意到版本號,

找了好一會才發(fā)現(xiàn)是這兩個地方。

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

添加實體模型時需要先不選擇數(shù)據庫里的表,即生成空模型,然后打開edmx文件,在模型瀏覽器中選中實體模型,在屬性中把DDL生成模板改成SSDLToOracle.tt (VS),數(shù)據庫生成工作流改成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創(chuàng)建oracle數(shù)據庫的實體模型遇到的問題及解決方案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 使用JavaScriptCore實現(xiàn)OC和JS交互詳解

    使用JavaScriptCore實現(xiàn)OC和JS交互詳解

    JavaScriptCore是webkit的一個重要組成部分,主要是對JS進行解析和提供執(zhí)行環(huán)境。下面這篇文章主要給大家介紹了使用JavaScriptCore實現(xiàn)OC和JS交互的相關資料,文中介紹的非常詳細,需要的朋友可以參考學習,下面來一起看看吧。
    2017-03-03
  • JavaScript實現(xiàn)頁面跳轉的八種方式

    JavaScript實現(xiàn)頁面跳轉的八種方式

    這篇文章介紹了JavaScript實現(xiàn)頁面跳轉的八種方式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • JavaScript中Object.values()的用法舉例

    JavaScript中Object.values()的用法舉例

    這篇文章主要給大家介紹了關于JavaScript中Object.values()的用法舉例,Object.values()是JavaScript中一個內置的靜態(tài)函數(shù),用于返回一個對象中所有屬性值的數(shù)組,需要的朋友可以參考下
    2023-09-09
  • javascript權威指南 學習筆記之變量作用域分享

    javascript權威指南 學習筆記之變量作用域分享

    最近一直在看《javascript權威指南 第五版》,變量作用域這一章,看得真的有點累。不過,收獲還是多多。
    2011-09-09
  • JS+flash實現(xiàn)chrome和ie瀏覽器下同時可以復制粘貼

    JS+flash實現(xiàn)chrome和ie瀏覽器下同時可以復制粘貼

    chrome和ie同時可以復制粘貼,想必大家一直思索的問題在本文將有一個不錯的實現(xiàn),下面為大家介紹下JS+flash是如何實現(xiàn)的,感興趣的朋友可以參考下
    2013-09-09
  • JS控制表單提交的方法

    JS控制表單提交的方法

    這篇文章主要介紹了JS控制表單提交的方法,可實現(xiàn)基于javascript提交表單信息的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 有關suggest快速刪除后仍然出現(xiàn)下拉列表的bug問題

    有關suggest快速刪除后仍然出現(xiàn)下拉列表的bug問題

    寫suggest的時候,有時我們快速刪除輸入框的文字后,但是suggest下拉列表還有出現(xiàn),導致的原因是因為ajax異步請求造成的,下面通過本文給大家分享下解決方法,感興趣的朋友一起看看
    2016-12-12
  • Js組件的一些寫法

    Js組件的一些寫法

    今天看了rank的一篇javascript腳本控件topic,突然想總結一下一些寫JS組件的方法,或者說一些不同人的不同coding style。
    2010-09-09
  • 通過js獲取div的background-image屬性

    通過js獲取div的background-image屬性

    div的background-image這個屬性,只是設置它的url,下面為大家介紹下如何獲取它的background-image屬性,感興趣的朋友可以參考下
    2013-10-10
  • js仿百度音樂全選操作

    js仿百度音樂全選操作

    這篇文章主要為大家詳細介紹了js仿百度音樂全選操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論

黄龙县| 农安县| 黑水县| 会宁县| 江门市| 木里| 晋中市| 吉安县| 石阡县| 永吉县| 洞头县| 拉萨市| 洛隆县| 惠水县| 澳门| 图木舒克市| 怀宁县| 威海市| 盐山县| 宁夏| 石嘴山市| 隆尧县| 高阳县| 荆州市| 岗巴县| 南郑县| 邢台县| 许昌县| 大港区| 莆田市| 靖州| 清镇市| 思南县| 靖远县| 二连浩特市| 双城市| 怀远县| 信丰县| 荆门市| 仙居县| 尤溪县|