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. 数据库层环节 能够对各个环节的问 ...
随机推荐
- webp图片实践之路
最近,我们在项目中实践了webp图片,并且抽离出了工具模块,整合到了项目的基础模板中.传闻IOS10也将要支持webp,那么使用webp带来的性能提升将更加明显.估计在不久的将来,webp会成为标配. ...
- 学点HTTP知识
不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需要实践.看别人说的 ...
- HTML5 Boilerplate - 让页面有个好的开始
最近看到了HTML5 Boilerplate模版,系统的学习与了解了一下.在各种CSS库.JS框架层出不穷的今天,能看到这么好的HTML模版,感觉甚爽.写篇博客,推荐给大家使用. 一:HTML5 ...
- LeetCode[3] Longest Substring Without Repeating Characters
题目描述 Given a string, find the length of the longest substring without repeating characters. For exam ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Maven 代理设置
在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies> <!-- proxy | Specificatio ...
- Android 关于ijkplayer
基于ijkplayer封装支持简单界面UI定制的视频播放器 可以解析ts格式的so库 怎样编译出可以解析ts等格式的so库?就是编译的时候需要在哪一步修改配置? 一些电视台的m3u8 CCTV1综合, ...
- [转载]敏捷开发之Scrum扫盲篇
现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述S ...
- ASP.NET 5运行时升级到Beta5
在Visual Studio 2015 RTM和Windows 10正式发布之前,微软把开源.NET升级到了beta5,带来了一些增强和改变.和Visual Studio 2015 RC一起安装的AS ...
- ABP框架搭建项目系列教程基础版完结篇
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 经过前面十二篇的基础教程,现在终于该做个总结了. 回顾 第一篇,我们建议新手朋友们先通过ABP官网的启动模板生成解决方案,因为这样 ...