这份工作一直以来都用Oracle数据库,先前都是直接用的ADO.NET但是写包跟存储过程是一个很头疼的事情,满足不了快速开发的需求。

一直常识找比较好用的ORM,先前用的Entity Framework不错,但是用于Oracle的话,服务器跟VS端都得装插件,最近从群里面的网友那得知ELINQ不错

就尝试用用。

对于我这样的ELINQ初学者来说,比较容易上手,唯一不足的就是网上的文档相对较少,我会一点一点的把自己这个学习过程中遇到的问题都写到博客园,供大家分享!

技术不行,不喜勿喷啊,呵呵!

首先我们创建一个文章实体ArticleContent

 using System;
 namespace GeoCms.Models
 {
     public class ArticleContent
     {
         public int ID { get; set; }
         public string Title { get; set; }
         public string Image { get; set; }
         public string Summary { get; set; }
         public string Content { get; set; }
         public DateTime PubTime { get; set; }
         public int ViewCount { get; set; }
         public int CateID { get; set; }

         public ArticleCategory Category { get; set; }
     }
 }

其中有个多对一的属性ArticleCategory,代码如下:

 using System.Collections.Generic;

 namespace GeoCms.Models
 {
     public class ArticleCategory
     {
         public int ID { get; set; }
         public string Name { get; set; }
         public int ParentID { get; set; }

         public IList<ArticleContent> Contents { get; set; }

     }
 }

IList<ArticleContent>表明一个ArticleCategory有多个ArticleContent

ArticleContent跟ArticleCategory是一对多的关系

最后我们新建dbcontext,代码如下:

 using System;
 using NLite.Data;

 namespace GeoCms.Models
 {
     public class CmsDbContext:DbContext
     {

         const string connectionstring = "OracleConenction";
         static NLite.Data.DbConfiguration dbConfig = NLite.Data.DbConfiguration
             .Configure(connectionstring)
             .SetSqlLogger(() => new SqlLog(Console.Out))
             .AddClass<Models.ArticleCategory>(m=> {
                 //自动增长
                 m.Id(c => c.ID).DbGenerated();
                 //这里很重要,设置自动增长列的序列,在创建table时候会自动创建序列
                 m.SequenceId(c => c.ID).SequenceName("SEQU_ArticleCategory");
                 //一对多(一个分类对应多个文章)
                 m.OneToMany<Models.ArticleContent>(c => c.Contents).ThisKey(c => c.ID).OtherKey(c => c.CateID);
             })
             .AddClass<Models.ArticleContent>(m=>{
                 //自动增长
                 m.Id(e => e.ID).DbGenerated();
                 //设置并创建序列
                 m.SequenceId(e => e.ID).SequenceName("SEQU_Articles");
                 //设置一对一(一个文章对应一个分类)
                 m.OneToOne<Models.ArticleCategory>(a => a.Category).ThisKey(a => a.CateID).OtherKey(c => c.ID);
             });

         public CmsDbContext():base(dbConfig)
         {

         }

         public readonly IDbSet<Models.ArticleCategory> ArticleCategory;
         public readonly IDbSet<Models.ArticleContent> Article;

     }
 }

最后我们到Global.asax的Application_Start事件中去创建数据表
在事件中添加如下代码:

 Models.CmsDbContext db = new Models.CmsDbContext();
             if (db.DbHelper.DbConfiguration.DatabaseExists())
             {
                 db.DbHelper.DbConfiguration.CreateTables();
             }

关于Oracle数据库的链接字符串,各位自己去百度,这里就不多说了

运行预览,生成的数据表如下

Elinq+Oracle的更多相关文章

  1. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  2. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  3. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  4. Oracle 的基本操作符

    != 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...

  5. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  6. 基于Oracle安装Zabbix

    软件版本 Oracle Enterprise Linux 7.1 64bit Oracle Enterprise Edition 12.1.0.2 64bit Zabbix 3.2.1 准备工作 上传 ...

  7. Oracle Database 12c Data Redaction介绍

    什么是Data Redaction Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM ...

  8. 使用Oracle官方巡检工具ORAchk巡检数据库

    ORAchk概述 ORAchk是Oracle官方出品的Oracle产品健康检查工具,可以从MOS(My Oracle Support)网站上下载,免费使用.这个工具可以检查Oracle数据库,Gold ...

  9. 利用Oracle RUEI+EM12c进行应用的“端到端”性能诊断

    概述 我们知道,影响一个B/S应用性能的因素,粗略地说,有以下几个大的环节: 1. 客户端环节 2. 网络环节(可能包括WAN和LAN) 3. 应用及中间层环节 4. 数据库层环节 能够对各个环节的问 ...

随机推荐

  1. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  2. Git 子模块 - submodule

    有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...

  3. Python应用03 使用PyQT制作视频播放器

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载. 最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/ ...

  4. angular2系列教程(八)In-memory web api、HTTP服务、依赖注入、Observable

    大家好,今天我们要讲是angular2的http功能模块,这个功能模块的代码不在angular2里面,需要我们另外引入: index.html <script src="lib/htt ...

  5. Nginx学习笔记--001-Nginx快速搭建

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的R ...

  6. 如何理解javaSript中函数的参数是按值传递

    本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...

  7. javascript高性能编程-算法和流程控制

          代码整体结构是执行速度的决定因素之一. 代码量少不一定运行速度快, 代码量多也不一定运行速度慢. 性能损失与代码组织方式和具体问题解决办法直接相关.       倒序循环可以提高性能,如: ...

  8. 项目持续集成环境(jenkins + SVN + maven + tomcat)

    整体流程 每次SVN上代码有变动,触发自动构建动作,并部署到服务器的tomcat上,具体流程: 1.SVN上提交代码修改 2.maven执行Goals 3.将web工程打成war包 4.关闭服务器的t ...

  9. 【流量劫持】沉默中的狂怒 —— Cookie 大喷发

    精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html 前言 上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更 ...

  10. .NET Portability Analyzer 已开源

    在一年前介绍过<介绍.NET 开发必备工具 .NET Portability Analyzer>,微软已经把代码开源到Github:https://github.com/Microsoft ...