由于System.Data.OracleClient.dll从.NET Framework4.0之后已被弃用,所以我们无法在.NET Framework高版本中使用。一番搜索之后,发现好多文章提到.NET连接Oracle需要安装客户端,安装驱动,各种配置...感觉无比麻烦。

Oracle Entity Framework使用基本配置

Oracle官方推出了对于.NET的支持【Oracle Data Provider for .NET】,根据我的Visual Studio下载了一个对应版本的组件,安装很简单,没有什么选项。



安装完之后,可以通过Visual Studio创建个应用,然后来体验ODP.NET。

项目创建之后,选择添加组件【 ADO.NET实体对象模型】



跟随向导一路点击,这里我选择数据库先行



选择【新建一个连接】->选择【Oracle数据源】



配置数据库库连接属性,我们需要数据库的用户名、密码,连接方式选择EZ连接,然后写上你的数据库所在服务器的ip或者服务器主机名(注:数据库主机名和数据库服务名不是同一个东西),Oracle端口一般默认为1521



配置完成后,修改连接串的名字,当然这不是必要的



最后选择需要操作的数据库表、存储过程、视图...



等待vsiual studio将代码自动生成后,即可操作数据库访问

using (var dbContext=new OracleDbContext())
{
foreach (var item in dbContext.TMODALs)
{
Console.WriteLine("{0} {1}",item.C_ORG_CODE, item.C_USR_CODE);
}
}

Oracle.ManagedDataAccess

在ODP.NET中包含了Oracle.ManagedDataAccess.dll组件,它是.NET连接Oracle的驱动,有了它你不需要再安装Oracle数据库客户端软件就可以连接数据库。你可以通过Nuget直接安装这个dll组件



调用代码和其他数据库的写法没什么区别,只要注意连接串中数据库主机名(ip),数据库服务名,账号,密码只要配置好几本不会出什么问题。

 string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ZHYW)));Persist Security Info=True;User ID=root;Password=root;";
using (OracleConnection oracleConnection = new OracleConnection(connectionString))
{
oracleConnection.Open();
string cmdText = "SELECT * FROM TMODAL";
OracleCommand oracleCommand = new OracleCommand(cmdText,oracleConnection);
OracleDataReader oracleDataReader = oracleCommand.ExecuteReader();
if (oracleDataReader.HasRows)
{
while (oracleDataReader.Read())
{
Console.WriteLine("{0} {1}", oracleDataReader[0], oracleDataReader[1]);
}
}
}

常见的一些错误

server explore 中的连接"*****" 具有相同的身份证明



这是由于服务器资源管理器中已经存在该名字的连接,你可以通过【视图】->【服务器资源管理器】->【数据库】中把同名连接删除

ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务



这个有可能是你的数据库服务名写错了,也就是数据库连接串中的SERVICE_NAME

Entity Framework入门教程:Oracle数据源访问的更多相关文章

  1. Entity Framework入门教程:SQLite数据源访问

    [环境安装] 可以通过NuGet直接搜索安装SQLite需要用到的组件 或者直接使用程序包管理器控制台 > Install-Package System.Data.SQLite 通过ADO.NE ...

  2. Entity Framework入门教程: Entity Framework支持的查询方式

    Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...

  3. Entity Framework入门教程(1)---Entity Framework简介

    什么是Entity Framework 学习EF的前提:熟练使用Linq和Ado.net,因为在使用EF框架进行开发时,我们大多数情况使用Linq进行查询和操作,而EF的底层实现用的是Ado.net. ...

  4. Entity Framework入门教程:什么是Entity Framework

    Entity Framework简介 Entity Framework是微软提供的一个O/RM(对象关系映射)框架.它基于ADO.NET,为开发人员提供了一种自动化的机制来访问和存储数据库中的数据. ...

  5. Entity Framework入门教程(8)---预先加载、延迟加载、显示加载

    1.预先加载 预先加载:在对一种类型的实体进行查询时,将相关的实体作为查询的一部分一起加载.预先加载可以使用Include()方法实现. 1.加载一个相关实体类型 栗子:使用Include()方法从数 ...

  6. Entity Framework入门教程(12)--- EF进行批量添加/删除

    EF6添加了批量添加/删除实体集合的方法,我们可以使用DbSet.AddRange()方法将实体集合添加到上下文,同时实体集合中的每一个实体的状态都标记为Added,在执行SaveChange()方法 ...

  7. ASP .NET MVC 之Entity Framework入门教程及源码

    本文主要的目的是 1. 说明Entity Framework Power Tools如何使用. 2. Entity Framework  快速门 实验环境: OS: Windows Server 20 ...

  8. Entity Framework入门教程:创建实体数据模型

    下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在Visual Studio项目中,右键程序集菜单,选择[添加]->[新建项],在[添加新项窗口]中选择[ADO.NET实体数据模型] ...

  9. Entity Framework入门教程(2)---EF工作流程

    EF工作流程 1.EF基本CRUD流程 下边的图就可以很清晰地展示EF的CRUD操作的基本工作流程: 这里做一个EF CRUD操作的简单总结:1.定义模型:这是EF工作的前提,定义模型包括定义领域类( ...

随机推荐

  1. C#读取excl(兼容office多种版本)

    要求:导入excl引用了using System.Data.OleDb,需要安装一个office Microsoft.ACE.OLEDB.12.0 office7以上版本 Microsoft.Jet. ...

  2. 阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口 )

    我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...

  3. linux中日志介绍

    linux日志 linux日志大多是以明文存储,一般存储在/var/log目录中,linux系统中主要有三个日志子系统:连接时间日志,进程统计日志,错误日志. 连接时间日志 连接时间日志是有多个程序执 ...

  4. C++第二篇--访问控制

    C++第二篇--访问控制 1. 引入 上一篇博文中从结构体引到了类,类当中不仅有数据成员还有一些函数,这些函数被称为成员函数.今天介绍新的内容,类当中的访问控制. 2. 访问控制 当你不添加任何声明, ...

  5. UDP和多线程服务器

    UDP: UDP是数据报文传输协议,这个传输协议比较野蛮,发送端不需要理会接收端是否存在,直接就发送数据,不会像TCP协议一样建立连接.如果接收端不存在的话,发送的数据就会丢失,UDP协议不会去理会数 ...

  6. Merge Two Sorted Lists & Remove Nth Node From End of List

    1.合并两个排好序的list Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The ...

  7. hdu_5868:Different Circle Permutation

    似乎是比较基础的一道用到polya定理的题,为了这道题扣了半天组合数学和数论. 等价的题意:可以当成是给正n边形的顶点染色,旋转同构,两种颜色,假设是红蓝,相邻顶点不能同时为蓝. 大概思路:在不考虑旋 ...

  8. Work 3(工作类) (2017.07.01)

  9. (转)Spring Bean Scope 有状态的Bean 无状态的Bean

    有状态会话bean   :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一 ...

  10. Java设计模式之适配器模式(项目升级案例)

    今天是我学习Java设计模式中的第三个设计模式了,但是天气又开始变得狂热起来,对于我这个凉爽惯了的青藏人来说,又是非常闹心的一件事儿,好了不管怎么样,目标还是目标(争取把23种Java设计模式接触一遍 ...