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框架。

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

第二章:系统层次划分 

数据存取方式

第三章:LmgOrm数据库访问层 

第四章:LmgOrm ORM

一: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类对应的数据库表的结构应该是:

下面的代码演示了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缓存架构说明

缓存架构说明如下:

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

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

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

LmgORM项目: 介绍相关推荐

  1. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...

  2. 欢迎来到美多商城!-项目准备之项目介绍-项目需求分析-项目架构设计

    欢迎来到美多商城! [前后端不分离的项目] 项目介绍 项目需求分析 需求分析原因: 可以整体的了解项目的业务流程和主要的业务需求. 项目中,需求驱动开发.即开发人员需要以需求为目标来实现业务逻辑. 需 ...

  3. 新东方php工程,这几个游学项目介绍,了解一下

    活着,除了改变世界,还有什么更重要的事情?也许你就差一个契机.这里有几个游学项目介绍,了解了,也许就是你改变世界的开始.不是玩笑话,科学家一直强调人的智慧还没有得到完全开发,所以一些陌生环境的刺激加上 ...

  4. 几种P2P流媒体开源项目介绍

    P2P流媒体开源项目介绍 1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据. ...

  5. 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器开源项目介绍

    揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...

  6. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...

  7. 10年C#历程的MVP之路与MVP项目介绍

            本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html  1.意外的惊喜 10月份收到微软总部寄来的荣誉证书,非常激动, ...

  8. Bootstrap4+MySQL前后端综合实训-Day09-AM【项目功能展示视频、小组汇报PPT、项目介绍】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 项目功能展示视频(视频地址:https://live.csdn.n ...

  9. Eurasia3 支持百万级用户的服务器和框架 - 国内开源项目介绍

    项目名称: Eurasia3 发起时间: 2004年 代码托管:http://code.google.com/p/eurasia 项目介绍: Eurasia3 是一种能够支持百万级同时在线长连接用户数 ...

  10. 【项目介绍】搜索引擎

    文章目录 BoostSearch / 搜索引擎 开发语言 开发环境 依赖库 项目简介 项目特点 项目链接 演示 项目介绍与难点分析 解析 分词 索引 正排索引 倒排索引 权重 包装 BoostSear ...

最新文章

  1. 安装64位Oracle 10g超详细教程
  2. Kubernetes安全之认证
  3. jvm classLoader 过程
  4. Minimax Problem(二分+二进制状态压缩)
  5. Spark 部署及示例代码讲解
  6. 最流行的自动化测试工具,总有一款适合你
  7. 新建Office文件丨默认模板文件
  8. 谷歌浏览器安装扩展插件
  9. 易基因|3文解读:微量样本甲基化测序在肿瘤中的应用
  10. win 7共享计算机改名,不用再去找软件 批量改名Win7一键搞定
  11. 在线展示pdf和word并且不能显示下载和打印按钮
  12. 如何把一个长链接缩短成一个短链接?
  13. 希腊字母的发音(希腊人的发音)
  14. 下载!《Nacos 架构与原理》pdf
  15. IOS学习六:Date Picker, Picker View选取器控件初步
  16. 对薛兆丰经济学思维的研究:价格的教益
  17. Xilinx Zynq mpsoc 的 pcie Tandem 配置
  18. 三.字符设备驱动高级
  19. 深度解读3D打印巨头Stratasys为何1亿美金收购Grabcad
  20. Microsoft Office Word 2007 文档结构图突然变小的解决办法

热门文章

  1. REST WebService与SOAP WebService的比较
  2. 如何查看自己Oracle的版本
  3. excel 2010 group and subtotal function
  4. VMware虚拟机在仅主机模式下的网卡无法动态获取IP
  5. UE4游戏开发基础命令
  6. 【转载】Spring @Async 源码解读。
  7. Vue2.x源码学习笔记-Vue实例的属性和方法整理
  8. slice 和 splice 区别
  9. [driver]linux内核动态加载模块
  10. win10输入法简体繁体切换