项目需要,要使用Oracle 11g数据库。作为不想写SQL的程序员,所以......

原先想当然的是使用EF+MSSQL的方式来进行配置。吃了哑巴亏。然后谷歌出了一篇好文,沿着这篇文章进行了搭建,It's Working.

然后我现在就把这篇文章搬过来, 原文地址:http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/NuGet/index.html#overview


时间有限,还是讲重点就好。

打开NuGet:

按照上面的步骤,在Nuget里面联机搜索 Oracle。 找到图中的那个库。进行安装,包含了Ef。

然后就去配置web.config的数据库连接串。我的:

 <add name="oracleConn" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=dm;Password=s;Data Source=10.7.9.8/od" />

  

简单易懂。

然后呢。 Ef该怎么配置就怎么配置。

要注意的是,Oracle里面如果全是大写的。那么你的对象也必须是大写的。 不然会报错。 当然可以通过映射来改变,如下。

实体:

public class Role
{
public int ID { get; set; } public int? P_ID { get; set; } public string RoleName { get; set; } public string Remark { get; set; } public string CreMan { get; set; } public DateTime? Create_Date { get; set; } public string UpdMan { get; set; } public DateTime? Update_Date { get; set; } public string Is_Del { get; set; } public int Version_No { get; set; } }

  

映射:

public class Role_Mapping : EntityTypeConfiguration<Role>
{
public Role_Mapping()
{
this.ToTable("MD_ROLE");
this.Property(t => t.RoleName).HasColumnName("ROLE");
this.Property(t => t.Create_Date).HasColumnName("CREATE_DATE");
this.Property(t => t.CreMan).HasColumnName("CREMAN");
this.Property(t => t.Is_Del).HasColumnName("IS_DEL");
this.Property(t => t.Remark).HasColumnName("REMARK");
this.Property(t => t.Update_Date).HasColumnName("UPDATE_DATE");
this.Property(t => t.UpdMan).HasColumnName("UPDMAN");
this.Property(t => t.Version_No).HasColumnName("VERSION_NO");
}
}

  

然后呢,ef会给默认的表名家 dbo,这是SQLSERVER的东西吧,Oracle也有吧。 这东西好像叫 Schema。

我们要在Ef上下文类的OnModelCreating方法里面进行修改,如下:

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("");
}

  

是的,设置为空字符串就好了。额,为什么没用string.Empty. 我去改下。

我的测试代码如下:

public class RoleService : IRoleService
{
public void GetRoles()
{
using (var ctx = new KjContext())
{
var roles = ctx.Role.Where(s => true).ToList();
var roles2 = ctx.Role.Where(s => s.P_ID != null).Select(s => s.RoleName).ToList();
var roles3 = ctx.Role.Where(s => s.Create_Date != null && s.Create_Date < DateTime.Now).Select(s => s.RoleName).ToList();
}
}
}

  

调用后,发现可以获取数据。 没有经过复杂的测试。 可能其他地方会有问题。且行且测试。

用 Entity Framework结合Oracle数据库来开发项目的更多相关文章

  1. [VSTS]让ADO.NET Entity Framework支持Oracle数据库(转载)

    近期由于项目所需不得不研究Oracle数据库,回想上一次用Oracle还是07年的事情,实习时候做华晨宝马的项目简单接触了Oracle.这次的项目需要基于.NET平台,我个人的习惯是能用微软自带的就不 ...

  2. 让ADO.NET Entity Framework支持Oracle数据库

    Oracle最近发布了 Oracle Data Access Component(ODAC)11. 2 Rel 4,其中增加了对 Entity Framework 4.1 和4.2的支持.这让 .NE ...

  3. 使用Entity Framework Core访问数据库(Oracle篇)

    前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架  终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...

  4. 使用Entity Framework Core访问数据库(DB2篇)

    前言 上一篇讲了一些EF Core访问Oracle的坑.(感兴趣请移步:使用Entity Framework Core访问数据库(Oracle篇)) 这篇主要讲一下关于EF Core访问DB2的一揽子 ...

  5. .NET Entity Framework (with Oracle ODP.NET) -Code First

    上一篇文章介绍了.NET Entity Framework ,并演示了Model First模式,本文将继续讨论 Code First 模式的实现. 一.摘要 1.目标 本文验证了通过Oracle D ...

  6. Oracle数据库之开发PL/SQL子程序和包

    Oracle数据库之开发PL/SQL子程序和包   PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保 ...

  7. Framework连接oracle数据库以及Cognos服务器出现错误

     1:Framework连接oracle数据库时出现下面错误信息 环境: win2008R2 cognos10.2.1, 服务器上已经安装oracle11.2 content manager连接的也是 ...

  8. entity framework无法写入数据库.SaveChanges()失败

    参考https://stackoverflow.com/questions/26745184/ef-cant-savechanges-to-db/28256645 https://www.codepr ...

  9. Oracle 数据库应用开发 30 忌

    原创 LaoYuanPython CSDN 今天 作者 | LaoYuanPython       责编 | 欧阳姝黎出品 | CSDN原力计划 引言 笔者及所在团队从 2000 年开始的 CRM 等 ...

随机推荐

  1. JD . 简单的网站构成、引入图标、去除 图片间距/加粗/倾斜/下划线/蓝色外边框 禁止文本拖拽、文字居中、做logo、模拟鼠标 、不使用hover外部css样式实现hover鼠标悬停改变样式

    模拟京东案例准备: 截图(效果图PSD文件) 搭建项目环境     (结构样式行为分离)   HTML 核心文件     index.html CSS       控制样式 base.css(基础样式 ...

  2. shell中的条件表达式

    条件表达式返回的结果都为布尔型 真为1,假为0 条件测试的表达式 [expression] [[expression]] test expression 这三种条件表达式的效果是一样的 比较符 整数比 ...

  3. python安装图文教程---超详细。。。不过是转的,但有改动

    如果你已安装好python,想安装第三方模块,方法详见如下地址: python安装第三方模块教程----marsggbo 1.想要安装Python,首先当然是去Python的官方网站(www.pyth ...

  4. ES6常用语法整合

    ES6也出来有一会时间了,他新增的语法糖也的确大大提高了开发者的效率,今天就总结一些自己用到最多的. 说到ES6肯定是先介绍Babel了,据阮一峰老师介绍到,Babel是一个广泛使用的转码器,可以将E ...

  5. 原创SQlServer数据库生成简单的说明文档小工具(附源码)

    这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...

  6. 老李推荐:第6章1节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览 2

    事件要到那里去? 每个事件源处理类都维护着一个自己的事件队列, 在Monkey中叫做CommandQueue,里面装的是每个具体的MonkeyEvent事件.当来自网络的字串命令被翻译成对应的Monk ...

  7. 性能调优之MYSQL高并发优化

    性能调优之MYSQL高并发优化   一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之 ...

  8. 在阿里云Linux服务器上安装MySQL

    申请阿里云Linux服务器 昨天在阿里云申请了一个免费试用5天的Linux云服务器. 操作系统:Red Hat Enterprise Linux Server 5.4 64位. CPU:1核 内存:5 ...

  9. 一文搞定FastDFS分布式文件系统配置与部署

    Ubuntu下FastDFS分布式文件系统配置与部署 白宁超 2017年4月15日09:11:52 摘要: FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储.文件同步.文件访问(文件 ...

  10. Lambda&Java多核编程-7-类型检查

    本篇主要介绍Lambda的类型检查机制以及周边的一些知识. 类型检查 在前面的实践中,我们发现表达式的类型能够被上下文所推断.即使同一个表达式,在不同的语境下也能够被推断成不同类型. 这几天在码一个安 ...