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 }
View Code

 

然后F5运行项目就可以看到查询出来的数据了,

posted @ 2013-11-02 11:17  Dn9x  阅读(1373)  评论(0编辑  收藏  举报