欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

于是決定升級到ef6,在oracle官網(wǎng)中得知,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ù)據(jù)層項目的.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安裝后自動生成的一般沒問題,我在安裝之前把網(wǎng)上找的資料里的配置項放在里面了,但是版本號不一致,程序啟動不了,一直沒注意到版本號,

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

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

添加實體模型時需要先不選擇數(shù)據(jù)庫里的表,即生成空模型,然后打開edmx文件,在模型瀏覽器中選中實體模型,在屬性中把DDL生成模板改成SSDLToOracle.tt (VS),數(shù)據(jù)庫生成工作流改成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采用新的默認類型映射,官網(wǎng)說明https://docs.oracle.com/cd/E56485_01/win.121/e55744/entityDataTypeMapping.htm#ODPNT8303,其中的 New Default Mappings 段。

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

附上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

總結(jié)

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

相關(guān)文章

  • js使用cookie記錄用戶名的方法

    js使用cookie記錄用戶名的方法

    這篇文章主要介紹了js使用cookie記錄用戶名的方法,通過完整實例形式分析了JavaScript針對cookie的創(chuàng)建、賦值及刪除等操作技巧,以及通過cookie記錄用戶登錄信息的方法,需要的朋友可以參考下
    2015-11-11
  • 微信小程序wxml不能使用Array.includes條件判斷解決方法

    微信小程序wxml不能使用Array.includes條件判斷解決方法

    這篇文章主要為大家介紹了微信小程序wxml不能使用Array.includes條件判斷解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • TypeScript接口與泛型全面精講

    TypeScript接口與泛型全面精講

    接口是一系列抽象方法的聲明,是一些方法特征的集合,這些方法都應(yīng)該是抽象的,需要由具體的類去實現(xiàn),然后第三方就可以通過這組抽象方法調(diào)用,讓具體的類執(zhí)行具體的方法,泛型是靜態(tài)類型語言的基本特征,允許將類型作為參數(shù)傳遞給另一個類型、函數(shù)、或者其他結(jié)構(gòu)
    2022-10-10
  • JSON.stringify的多種用法總結(jié)

    JSON.stringify的多種用法總結(jié)

    這篇文章主要給大家介紹了關(guān)于JSON.stringify使用的相關(guān)資料, JSON.stringify()方法是將一個JavaScript值(對象或者數(shù)組)轉(zhuǎn)換為一個 JSON字符串,需要的朋友可以參考下
    2021-06-06
  • javaScript 邏輯運算符使用技巧整理

    javaScript 邏輯運算符使用技巧整理

    這篇文章主要介紹了javaScript 邏輯運算符使用技巧整理的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • javascript運算符——邏輯運算符全面解析

    javascript運算符——邏輯運算符全面解析

    下面小編就為大家?guī)硪黄猨avascript運算符——邏輯運算符詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 一文帶你掌握掌握JavaScript中不同屬性類型的細節(jié)

    一文帶你掌握掌握JavaScript中不同屬性類型的細節(jié)

    JavaScript是一種功能強大的編程語言,支持面向?qū)ο蟮木幊谭妒?,本文將介紹JavaScript中面向?qū)ο缶幊痰幕靖拍睿▽ο?、屬性類型、定義多個屬性和讀取屬性的特性
    2023-06-06
  • 微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色效果

    微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色效果

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)購物車選擇規(guī)格顏色選中效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • JS實現(xiàn)的base64加密解密操作示例

    JS實現(xiàn)的base64加密解密操作示例

    這篇文章主要介紹了JS實現(xiàn)的base64加密解密操作,結(jié)合實例形式分析了基于javascript的base64加密與解密函數(shù)定義與使用相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • javascript常用函數(shù)(2)

    javascript常用函數(shù)(2)

    這篇文章主要介紹了javascript常用函數(shù),再來15個常用函數(shù),都具有很高的實用性,感興趣的小伙伴們可以參考一下
    2015-11-11

最新評論