Go to my github

LmgORM项目: 介绍

 

LmgOrm介绍 

 

第一章:前言... 3

第二章:系统层次划分... 3

第三章:LmgOrm数据库访问层... 3

第四章:LmgOrm ORM.. 4

一:LmgOrm O/R Mapping 起步... 4

二:LmgOrm O/R Mapping映射方法说明... 4

三:LmgOrm O/R Mapping对继承的支持... 4

四:LmgOrm O/R Mapping操作核心... 5

五:LmgOrm O/R Mapping 事务处理... 5

六:LmgOrm O/R Mapping 对象查询... 5

七:LmgOrm O/R Mapping 配置文件... 5

第一章:前言 

LmgOrm的目标,是开发一个开源的基于Microsoft.Net的轻量级的应用软件系统开发框架,包含以下内容:

Ø 一个轻量级的O/R Mapping框架。

这个框架从二年前就开始做了,但是因为工作的原因,具体的开发过程一直是断断续续,中间因个人对编程思想认识的变化,在结构方面也一直有点变化。

第二章:系统层次划分 

clip_image002

数据存取方式

clip_image004

第三章:LmgOrm数据库访问层 

image

第四章:LmgOrm ORM

image

一:LmgOrm O/R Mapping 起步

对开发人员来说,只有BaseDao、NHibernatePage、QueryHelper等极少数接口需要掌握,上手快,使用非常方便。

下面的例子给出了使用LmgOrm进行ORM操作的基本过程。

定义一个类:

View Code
public class Product{

private int m_ID;

private string m_Name;

private decimal m_Price;

public Product() { }

public Product(string name, decimal price){

m_Name
= name;

m_Price
= price;

}

public int ID{

get { return m_ID; }

set { m_ID = value; }

}

public string Name{

get { return m_Name; }

set { m_Name = value; }

}

public decimal Price{

get { return m_Price; }

set { m_Price = value; }

}

}

上面这个Produc类对应的数据库表的结构应该是:

clip_image008

下面的代码演示了LmgOrm是如何把Product对象新增到数据库中的。

二:LmgOrm O/R Mapping映射方法说明 

映射部分,完成对象和关系型数据库之间映射关系的表达。LmgOrm使用xml来描述映射关系。

以下是实体类对应的XML文件 需要设置成 嵌入的资源 要不然系统会报错的。

View Code
<?xml version="1.0" encoding="GBK"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="LmgOrm.Entity" assembly="LmgOrm.Entity"> <class name="Produc" table="cm_Produc" lazy="false"> <id name="Id" type="Int32" length="10"> <column name="id" not-null="true" unique="true"/> <generator class="sequence"> <param name="sequence">SEQ_Produc_ID</param> </generator> </id> <property name="Name" column="name" not-null="False" length="50" type="String"/> <property name="Price " column="price" not-null="False" length="10" type=" Int32 "/> </class> </hibernate-mapping>

三:LmgOrm O/R Mapping对继承的支持 

LmgOrm目前支持一种继承模式:ONE_CLASS_ONE_TABLE

这种映射模式将每个类映射到对应的一个表

四:LmgOrm O/R Mapping操作核心 

LmgOrm O/R Mapping框架的操作核心,在于BaseDao类,对实体对象的操作,包括增、删、改、查的操作,都是通过这个接口来进行的。

查询的补助类是:QueryHelper

SQL查询补助类是:DbHelper

五:LmgOrm O/R Mapping 事务处理

LmgOrm框架提供了简单的事务处理的能力,这是通过BaseDao接口来实现的。他们会自动开启事务。

六:LmgOrm O/R Mapping 对象查询

1:一般查询

2:分页查询

QueryHelper queryHelper = new QueryHelper()

queryHelper.AddTable(
typeof(KnowUser), "m");

queryHelper.AddOrder(
"m", "ReTopic", false);

queryHelper.SetFullFieldSql(
null, null);

NHibernatePage nPage
= QueryHandler.Instance.QueryByPage("数据库连接", typeof(KnowUser), curPage, pageSize, queryHelper);

七:LmgOrm O/R Mapping 配置文件

配置文件例子:

View Code
<?xml version="1.0" encoding="gb2312" ?>

<LmgOrm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<LmgOrm.ORM>

<connections>

<connection name="DBNAME_COUNTRYDB" datetype="sqlserver2000" conntype="System.Data.SqlClient.SqlConnection" assembly="System.Data.SqlClient">

<![CDATA[Data Source=lmg\SQLEXPRESS;DataBase=countrydb;user=sa;password=123456;Connect Timeout=180;Enlist=true;Pooling=true;Max Pool Size = 300;Min Pool Size = 5;Connection Lifetime=200;]]>

</connection>

</connections>

<assembly>

<![CDATA[LmgOrm.Entity]]>

</assembly>

</LmgOrm.ORM>

<LmgOrm.Cache />

</LmgOrm>

第五章:LmgOrm Cache

一:LmgOrm Cache起步

这个没什么说的用的dz!nt3.0的缓存,我是直接Copy过来的 随便也学习学习一个它的原理咯。

二:LmgOrm Cache缓存架构说明

缓存架构说明如下:

clip_image010

看到了吧,里面的DNTCache就是“策略”模式的应用场景,而DefaultCache , ForumCache,RssCache等等就是相应的具体策略,每一种策略都会对.net所提供的缓存机制进行一番“订制”,以实现不同的用途。比如系统DefaultCache在对象到期时提供数据再次加载机制,而ForumCache而不使用这种机制,另外还有缓存的到期时间几种策略也各不相同,这都是根据具体的应用场景"量身订制"的。

下面对缓存设计所采用的几种技术做一下简要说明。包括XML,XPATH ,"单件模式" 以及跨web园共享数据。

记得在豪杰工作期间,一次老梁给我们开会,其中的一段话我至今还记忆犹新,他说CPU访问内存的速度和访问硬盘的速度在某些情况下是相近的,如果我没理解的话比如说“虚拟缓存”或最新频繁访问的硬盘区段,这些地方的代码或文件会有比较高的运行和访问效率。因此,我想到了使用文件标志关联的方法来解决这个多进程问题。接着就顺理成章的使用了文件修改日期这个属性进行在多进程下缓存是否更新的依据了,大家可以到开源下载包中的config文件夹下把一个cache.config的文件,对应最新的数据项再回过头来看代码就会一清二楚了

posted @ 2011-04-16 20:35  峡谷少爷  阅读(495)  评论(0编辑  收藏  举报