Linq to Entity操作Oracle
公司的项目一直都是使用Oracle,之前一直都是使用sql, procedure, function直接操作数据库,最近想使用Linq,本来计划要使用Linq to oracle的,可是发现直接使用却很多东西都没有,技术上的支持也不完善,完善点的都是需要版权的..., 之前使用Linq to mysql的时候我使用的是DLinq,这个还不错吧,也是免费的,但是这个在处理Oracle的时候发现很多地方不完善,而且数据库方面太庞大,所以后来就想到使用linq to entity,上网看了下想法还是不错了,所以就试了下,但是在使用中也还是不顺畅的,所以就记录下使用的过程:
阅读目录:
1.环境
2.安装Oracle
3.选择相应Oracle工具
4.安装Oracle工具
5.创建项目, 建立连接
6.建立实体数据模型
7.编码运行
环境
VS2010, Oracle11g
安装Oracle
首先你的电脑上面需要安装一个oracle,当然没有必要安装11g那么庞大的DB,oracle有一个精简版的叫XE,你只要安装这个就行了,鉴于Oracle的Oracle Developer Tools for Visual Studio最新版本已经是支持11g往上了,所以还是建议安装11g的精简版,如果你已经安装过11g了,那就不用这步操作了,
选择相应的Oracle工具
安装好上面的db之后需要安装”Oracle Developer Tools for Visual Studio“,地址:http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html
这里是一个列表,我使用的是11.2.0.3.20这个版本,如图:
当然具体需求要具体对待嘛,
安装Oracle工具
下载之后就可以安装了,如果你是开发的机器的话选择里面的客户端就行了!
一路下一步下去就行了,
补充:这里额外介绍下tns,如果你连接数据库的时候是通过tns,那么请把你的tns文件复制一份放到Oracle Developer Tools for Visual Studio的安装目录下的client_3\Network\Admin下一份,比如我的放在F:\app\admin\product\11.2.0\client_3\Network\Admin,11.2.0下有三个目录,client1, client2, client3,放在3里面,这步建议你做
创建项目, 建立连接
说下怎么具体使用,打开VS2010,新建一个Asp.net MVC3的项目(我这里是使用MVC,当然WebForm也是可以的),然后在工具>连接到服务器>数据连接>右键添加连接,
如果不出意外他会自动弹出的就是oracle的连接,
Data source name:这里选择的就是刚才上面tns里面配置好的连线名称,
如果你没有做上面一步,那么这里是什么都没有的,选择好你的tns之后填写用户名和密码,其他不要管直接确定就可以了,你就可以看到你的数据库的表/视图/等等的一些东西,如图:
建立实体数据模型
下面在你的MVC项目的Models中右键添加>新建项>数据>ADO.NET 实体数据模型,
然后他会弹框让你选择
直接双击从数据库生成,然后可以选择刚才的连线,也可以更改连线,是否敏感数据,选择是就OK了!
至于下面这句将web.config中的实体连接设置另存为:这里的名称虽然说是随便起的,但是还是要规范下,这个将是你后面一直使用的连线名称,我当时就是因为没有注意这个害的我找了很久的错误信息,在下一步之后就是选择表/存储过程/等信息了,
上步完成后会在web.config中新增一个以刚才名称的连线信息,不过这个连线有点长:
这里要说下:如果你是在类库中新建的数据库文件,那么会重新生成一个app.config文件,文件里面就只有这段代码,
编码运行
上面都是准备工作,下面就开始编码了,当然没有准备工作还能开始编码啊,我们就直接在HomeController的Index中写代码吧,我的代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 using System.Data.Objects; 7 using System.Configuration; 8 using System.Data.EntityClient; 9 using System.Data; 10 using MvcL.Models; 11 12 namespace MvcL.Controllers 13 { 14 public class HomeController : Controller 15 { 16 public ActionResult Index() 17 { 18 //这里的entities就是刚才的那个名字 19 string con = "name = Entities"; 20 21 string res = ""; 22 23 using (var ctx = new Entities(con)) //获取连线 24 { 25 //linq查询,这个就不用说了吧, 26 var users = from e in ctx.Users where e.ID < 1000 select e; 27 28 //遍历 29 foreach (var User in users) 30 { 31 res += User.NAME + "<br/>"; 32 } 33 } 34 35 ViewBag.Message = res; 36 37 return View(); 38 } 39 40 public ActionResult About() 41 { 42 return View(); 43 } 44 } 45 }
然后F5运行项目就可以看到查询出来的数据了,