Elinq+Oracle
这份工作一直以来都用Oracle数据库,先前都是直接用的ADO.NET但是写包跟存储过程是一个很头疼的事情,满足不了快速开发的需求。
一直常识找比较好用的ORM,先前用的Entity Framework不错,但是用于Oracle的话,服务器跟VS端都得装插件,最近从群里面的网友那得知ELINQ不错
就尝试用用。
对于我这样的ELINQ初学者来说,比较容易上手,唯一不足的就是网上的文档相对较少,我会一点一点的把自己这个学习过程中遇到的问题都写到博客园,供大家分享!
技术不行,不喜勿喷啊,呵呵!
首先我们创建一个文章实体ArticleContent
1 using System; 2 namespace GeoCms.Models 3 { 4 public class ArticleContent 5 { 6 public int ID { get; set; } 7 public string Title { get; set; } 8 public string Image { get; set; } 9 public string Summary { get; set; } 10 public string Content { get; set; } 11 public DateTime PubTime { get; set; } 12 public int ViewCount { get; set; } 13 public int CateID { get; set; } 14 15 public ArticleCategory Category { get; set; } 16 } 17 }
其中有个多对一的属性ArticleCategory,代码如下:
1 using System.Collections.Generic; 2 3 namespace GeoCms.Models 4 { 5 public class ArticleCategory 6 { 7 public int ID { get; set; } 8 public string Name { get; set; } 9 public int ParentID { get; set; } 10 11 public IList<ArticleContent> Contents { get; set; } 12 13 } 14 }
IList<ArticleContent>表明一个ArticleCategory有多个ArticleContent
ArticleContent跟ArticleCategory是一对多的关系
最后我们新建dbcontext,代码如下:
1 using System; 2 using NLite.Data; 3 4 namespace GeoCms.Models 5 { 6 public class CmsDbContext:DbContext 7 { 8 9 const string connectionstring = "OracleConenction"; 10 static NLite.Data.DbConfiguration dbConfig = NLite.Data.DbConfiguration 11 .Configure(connectionstring) 12 .SetSqlLogger(() => new SqlLog(Console.Out)) 13 .AddClass<Models.ArticleCategory>(m=> { 14 //自动增长 15 m.Id(c => c.ID).DbGenerated(); 16 //这里很重要,设置自动增长列的序列,在创建table时候会自动创建序列 17 m.SequenceId(c => c.ID).SequenceName("SEQU_ArticleCategory"); 18 //一对多(一个分类对应多个文章) 19 m.OneToMany<Models.ArticleContent>(c => c.Contents).ThisKey(c => c.ID).OtherKey(c => c.CateID); 20 }) 21 .AddClass<Models.ArticleContent>(m=>{ 22 //自动增长 23 m.Id(e => e.ID).DbGenerated(); 24 //设置并创建序列 25 m.SequenceId(e => e.ID).SequenceName("SEQU_Articles"); 26 //设置一对一(一个文章对应一个分类) 27 m.OneToOne<Models.ArticleCategory>(a => a.Category).ThisKey(a => a.CateID).OtherKey(c => c.ID); 28 }); 29 30 31 32 public CmsDbContext():base(dbConfig) 33 { 34 35 } 36 37 public readonly IDbSet<Models.ArticleCategory> ArticleCategory; 38 public readonly IDbSet<Models.ArticleContent> Article; 39 40 41 } 42 }
最后我们到Global.asax的Application_Start事件中去创建数据表
在事件中添加如下代码:
1 Models.CmsDbContext db = new Models.CmsDbContext(); 2 if (db.DbHelper.DbConfiguration.DatabaseExists()) 3 { 4 db.DbHelper.DbConfiguration.CreateTables(); 5 }
关于Oracle数据库的链接字符串,各位自己去百度,这里就不多说了
运行预览,生成的数据表如下
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。