使用EF(EntityFramework)的bool布尔变量操作Oracle数据库

使用EF(EntityFramework)的bool布尔变量操作Oracle数据库

Oracle数据库本身没有bool类型,但是C#编程中使用bool值很方便做运算。Oracle最新的Oracle.ManagedDataAccess是支持C#中的bool的,不需要安装Oracle客户端的自适应32位及64位,在也不用为安装32位或64位的Oracle烦恼了。

Oracle的EF(EntityFramework)开发,不需要安装Oracle客户端,不需要安装Oracle Developer Tools for Visual Studio,因为我们使用的是CodeFrist,除非你想使用可视化的操作页面可以考虑安装。其实我也不完全使用CodeFirst,特别反感需要把字段的长度都固定在C#代码里。我也不使用数据库迁移,我喜欢使用powerdesigner设计数据库,可清晰的看到各表的依赖关系,方便交流,可自动生成Oracle数据库的SQL脚本,手工运行SQL语句,生产环境中也好部署,特别是后期的更新,感觉使用数据库迁移心里不踏实,一不小心把数据库Drop了可咋办。

Oracle的表采用number(1)的类型,1:true,0:false。

关键步骤

 install-package Oracle.ManagedDataAccess
 install-package Oracle.ManagedDataAccess.EntityFramework

特别是配置文件

  <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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.168.1.188)(PORT=6521))(CONNECT_DATA=(SERVICE_NAME=hkqghkbg)));User ID=dacong;Password=Pass1word;" /> 
  </connectionStrings>
<entityFramework>
    <defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
  <oracle.manageddataaccess.client>
    <version number="*">
<edmMappings>
        <edmMapping dataType="number">
          <add name="bool" precision="1" />
          <add name="byte" precision="3" />
          <add name="int16" precision="5" />
          <add name="int32" precision="10" />
          <add name="int64" precision="19" />
        </edmMapping>
      </edmMappings>
    </version>
  </oracle.manageddataaccess.client>
 

C# 的Dapper组件也可以使用bool操作Oracle数据库,表的字段采用number(1),0:false,>=1:true

发布了181 篇原创文章 · 获赞 35 · 访问量 76万+

猜你喜欢

转载自blog.csdn.net/dacong/article/details/97611230
今日推荐