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. 数据库层环节 能够对各个环节的问 ...
随机推荐
- MIP改造常见问题二十问
在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...
- JS核心系列:浅谈原型对象和原型链
在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对 ...
- 通过ProGet搭建一个内部的Nuget服务器
.NET Core项目完全使用Nuget 管理组件之间的依赖关系,Nuget已经成为.NET 生态系统中不可或缺的一个组件,从项目角度,将项目中各种组件的引用统统交给NuGet,添加组件/删除组件/以 ...
- .NET面试题系列[8] - 泛型
“可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用.“ - Jon Skeet .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] ...
- (系统架构)标准Web系统的架构分层
标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...
- 神经网络、logistic回归等分类算法简单实现
最近在github上看到一个很有趣的项目,通过文本训练可以让计算机写出特定风格的文章,有人就专门写了一个小项目生成汪峰风格的歌词.看完后有一些自己的小想法,也想做一个玩儿一玩儿.用到的原理是深度学习里 ...
- 如何避免git每次提交都输入密码
在ubuntu系统中,如何避免git每次提交都输入用户名和密码?操作步聚如下:1: cd 回车: 进入当前用户目录下:2: vim .git-credentials (如果没有安装vim 用其它编辑器 ...
- 漫谈C#编程语言在游戏领域的应用
0x00 前言 随着微软越来越开放,C#也变得越来越吸引人们的眼球.而在游戏行业中,C#也开始慢慢地获得了关注.这不, 网易绝代双娇手游团队已经全面使用.Net Core支持前后端统一C#开发,跨平台 ...
- 【从零开始学BPM,Day5】报表配置及自定义功能页面开发
[课程主题] 主题:5天,一起从零开始学习BPM [课程形式] 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排. [第五天课程] 1.课程概要 Step 1 软件下载:H3 BP ...
- iOS之判断手机号码、邮箱格式是否正确
//判断手机号码格式是否正确 + (BOOL)valiMobile:(NSString *)mobile{ mobile = [mobile stringByReplacingOccurren ...