Elinq+Oracle
这份工作一直以来都用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的更多相关文章
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- 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. ...
- 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 服务器安装操 ...
- Oracle 的基本操作符
!= 不等于 select empno,ename,job from scott.emp where job!='manager' ^= 不等于 select empno,ename,job from ...
- 使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
- 基于Oracle安装Zabbix
软件版本 Oracle Enterprise Linux 7.1 64bit Oracle Enterprise Edition 12.1.0.2 64bit Zabbix 3.2.1 准备工作 上传 ...
- Oracle Database 12c Data Redaction介绍
什么是Data Redaction Data Redaction是Oracle Database 12c的高级安全选项之中的一个新功能,Oracle中国在介绍这个功能的时候,翻译为“数据编纂”,在EM ...
- 使用Oracle官方巡检工具ORAchk巡检数据库
ORAchk概述 ORAchk是Oracle官方出品的Oracle产品健康检查工具,可以从MOS(My Oracle Support)网站上下载,免费使用.这个工具可以检查Oracle数据库,Gold ...
- 利用Oracle RUEI+EM12c进行应用的“端到端”性能诊断
概述 我们知道,影响一个B/S应用性能的因素,粗略地说,有以下几个大的环节: 1. 客户端环节 2. 网络环节(可能包括WAN和LAN) 3. 应用及中间层环节 4. 数据库层环节 能够对各个环节的问 ...
随机推荐
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- 旺财速啃H5框架之Bootstrap(四)
上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...
- 【C#附源码】数据库文档生成工具支持(Excel+Html)
[2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...
- JavaWeb——Listener
一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色 ...
- C++的内存泄漏检测【转载】
原文地址: http://www.cnblogs.com/jily/p/6239514.html
- openresty 前端开发入门四之Redis篇
这章主要演示怎么通过lua连接redis,并根据用户输入的key从redis获取value,并返回给用户 操作redis主要用到了lua-resty-redis库,代码可以在github上找得到 而且 ...
- java 设计模式
目录: 设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计 ...
- Netty构建分布式消息队列实现原理浅析
在本人的上一篇博客文章:Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇 中,重点向大家介绍了AvatarMQ主要构成模块以及目前存在的优缺点.最后以一个生产者.消费者传递消息的例子, ...
- Dubbo 备注
Dubbo是阿里开源的一款服务治理中间件,主要包含如下节点: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. ...
- WPF - 属性系统 (4 of 4)
依赖项属性的重写 在基于C#的编程中,对属性的重写常常是一种行之有效的解决方案:在基类所提供的属性访问符实现不能满足当前要求的时候,我们就需要重新定义属性的访问符. 但对于依赖项属性而言,属性执行逻辑 ...