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. 数据库层环节 能够对各个环节的问 ...
随机推荐
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- angular实现统一的消息服务
后台API返回的消息怎么显示更优雅,怎么处理才更简洁?看看这个效果怎么样? 自定义指令和服务实现 自定义指令和服务实现消息自动显示在页面的顶部,3秒之后消失 1. 显示消息 这种显示消息的方式是不是有 ...
- 编写高质量代码:改善Java程序的151个建议(第8章:多线程和并发___建议126~128)
建议126:适时选择不同的线程池来实现 Java的线程池实现从根本上来说只有两个:ThreadPoolExecutor类和ScheduledThreadPoolExecutor类,这两个类还是父子关系 ...
- openresty 前端开发入门四之Redis篇
这章主要演示怎么通过lua连接redis,并根据用户输入的key从redis获取value,并返回给用户 操作redis主要用到了lua-resty-redis库,代码可以在github上找得到 而且 ...
- 云计算下PAAS的解析一
云计算下PAAS的解析一 PaaS是Platform-as-a-Service的缩写,意思是平台即服务. 把服务器平台作为一种服务提供的商业模式.通过网络进行程序提供的服务称之为SaaS( ...
- 深入理解DOM节点操作
× 目录 [1]创建节点 [2]插入节点 [3]移除节点[4]替换节点[5]复制节点 前面的话 一般地,提起操作会想到“增删改查”这四个字,而DOM节点操作也类似地对应于此,接下来将详细介绍DOM的节 ...
- angular2之前端篇—1(node服务器分支)
上一篇.net core和angular2之前端篇-1 使用的是dotnet模板.之所以用它,因为想用他写webapi,但是写道下一篇的时候遇到点问题,所以先写个分支测试一下.这次是用Node作为服务 ...
- Android 扫描条形码(Zxing插件)
使用Android Studio 一.在build.gradle(Module:app)添加代码 下载,调用插件 1 apply plugin: 'com.android.application' ...
- Android6.0运行时权限管理
自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验,不会再强迫用户因拒绝不该拥有的权限而导致的无法安装 ...
- java中判断字符串是否为只包含数字
1.用Java自带的函数 public static boolean isNumeric(String str){ for(int i=str.length();--i>=0;){ if (!C ...