这份工作一直以来都用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. webp图片实践之路

    最近,我们在项目中实践了webp图片,并且抽离出了工具模块,整合到了项目的基础模板中.传闻IOS10也将要支持webp,那么使用webp带来的性能提升将更加明显.估计在不久的将来,webp会成为标配. ...

  2. 微信企业号 获取AccessToken

    目录 1. AccessToken介绍 2. 示例代码 1. AccessToken介绍 1.1 什么是AccessToken AccessToken即访问凭证,业务服务器每次主动调用企业号接口时需要 ...

  3. ASP.NET MVC 请求路径相关参数的获取

    Request.ApplicationPath / Request.CurrentExecutionFilePath /Home/Index Request.FilePath /Home/Index ...

  4. 【趣事】用 JavaScript 对抗 DDOS 攻击 (下)

    上一篇:http://www.cnblogs.com/index-html/p/js-network-firewall.html 对抗 v2 之前的那些奇技淫巧,纯属娱乐而已,并不能撑多久. 但简单. ...

  5. javascript表单的Ajax 提交插件的使用

    Ajax 提交插件 form.js 表单的下载地址:官方网站:http://malsup.com/jquery/form/ form.js 插件有两个核心方法:ajaxForm()和ajaxSubmi ...

  6. 高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二)

    在项目开发中,尤其是企业的业务系统中,对文档的操作是非常多的,有时几乎给人一种错觉的是”这个系统似乎就是专门操作文档的“.毕竟现在的很多办公中大都是在PC端操作文档等软件,在这些庞大而繁重的业务中,单 ...

  7. 你真的会玩SQL吗?之逻辑查询处理阶段

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  8. Axure 8.0.0.3312可用注册码

    用户名:aaa 注册码:2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3gEN5h7FkVPIn8oG3uphlOeytIajxGU 用户名:axureuser 序列号:8wFfI ...

  9. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  10. swift 中关于open ,public ,fileprivate,private ,internal,修饰的说明

    关于 swift 中的open ,public ,fileprivate,private, internal的区别 以下按照修饰关键字的访问约束范围 从约束的限定范围大到小的排序进行说明 open,p ...