项目需要,要使用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. 相机标定:kalibr标定工具箱使用总结

    1 多相机标定 1.1采集图像和IMU 1.2制作Bag包 1)组织文件结构 ~/kalibr_workspace/test/stereo_calib bagsrc cam0 (1+time(0))* ...

  2. 【Hexo】Hexo+Github构建个人博客 (三):添加皮肤主题

    一.选择主题 选择你自己喜欢的主题 参考: 1.Hexo官网主题 2.知乎:有哪些好看的 Hexo 主题? 二.配置主题 1.我选择了hexo-theme-yilia这个主题,简洁大方,功能齐全: 这 ...

  3. 老李推荐:第5章3节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动脚本

    老李推荐:第5章3节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动脚本   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...

  4. SpringMVC基础学习(三)—参数绑定

    一.基本数据类型的绑定 页面 <form action="${pageContext.request.contextPath}/test.do" method="p ...

  5. APP被苹果App Store拒绝的79个原因【转】

    作为iOS开发者,估计有很多都遇到过APP提交到App Store被拒,然后这些被拒的原因多种多样,今天dApps收集了常见的被拒的原因,以便更多开发者了解. APP被苹果APPStore拒绝的各种原 ...

  6. canvas与svg区别

    canvas与svg区别 和SVG比起来有两个弱点,一个是画布里的内容是独立的,不能当成html元素:二是CANVAS是属于位图格式,而SVG是矢量图,可以平滑放大. HTML5的canvas画出来的 ...

  7. python scrapy 抓取脚本之家文章(scrapy 入门使用简介)

    老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就 ...

  8. TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。

    #三次握手 客户端向服务器端发送SYN包,客户端进入SYN_SEND状态 服务器端收到客户端发送的包返回ACK+SYN包,服务器端进入SYN_RECV状态 客户端收到服务器端返回的包再发回ACK包,客 ...

  9. 揭秘Kafka高性能架构之道 - Kafka设计解析(六)

    原创文章,同步首发自作者个人博客.转载请务必在文章开头处以超链接形式注明出处http://www.jasongj.com/kafka/high_throughput/ 摘要 上一篇文章<Kafk ...

  10. Cygwin在线安装指南

    详细说明请看文章http://www.crifan.com/files/doc/docbook/cygwin_intro/release/htmls/install_cygwin_setup_exe. ...