[转载]Restful.Data v1.0 – 轻量级数据持久层组件, 正式开源发布了 – linli8 – 博客园.
经过几个星期的优化调整,今天 Restful.Data 正式开源发布。
源码地址:https://github.com/linli8/Restful
今天不写那么多废话了,还是重新介绍一下 Restful.Data 吧。
1、什么是Restful.Data?
Restful.Data是一套通用的轻量级数据持久层组件,除封装了ADO.NET基本的数据库操作以外,也提供了一些orm相关的API,用户可以方便的定义实体类,并使用这些API对数据进行增删改查等操作。
Restful.Data借鉴了业界如nhibernate、entity framework等知名的数据持久层组件,但从一开始设计的初衷就是为了让用户能快速的学习和使用,并写出更加简洁优雅的代码,所以摒弃了一些复杂的设 计和功能,用户可以使用变通的方式或方法使用Restful.Data组件实现其目的。
Restful.Data充分考虑了实体框架的执行效率问题,进行了反复的推敲和论证,尽可能的采用高效的设计方案来提高性能。
2、谁需要Restful.Data?
敢于冒险、追求完美、勇于挑战并极具责任感的程序设计人员。
3、Restful.Data提供哪些功能?
基本的ADO.NET操作:BeginTransaction、ExecuteScalar、ExecuteDataReader、 ExecuteDataTable、ExecuteDataSet、ExecutePageQuery、ExecuteStoredProcedure
ORM相关操作:Insert、Updete、Delete、Find
4、如何使用Restful.Data?
使用前请先下载Restful.dll、Restful.Data、Restful.Data.MySQL、Remotion.Linq.dll、MySQL.Data.dll,或者直接下载源代码进行编译并获取这5个dll,并在项目中引用这些dll。
在 Web.config 或 App.config 中配置连接字符串,如下:
< span class = "pln" > </ span > |
注册提供程序工厂:
< span class = "typ" >SessionFactories</ span >< span class = "pun" >.</ span >< span class = "typ" >Register</ span >< span class = "pun" >();</ span > |
提供程序工厂在一个Application中仅需注册一次。
如何进行基本的数据库操作:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > sql </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "select * from Person" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >DataTable</span><span class = "pln" > dt </span><span class = "pun" >=</span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >ExecuteDataTable</span><span class = "pun" >(</span><span class = "pln" > sql </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span> |
CreateDefaultSession默认情况下根据配置文件中连接字符串节点的第一项创建数据库连接,你可以调用CreateSession进行指定,或者你也可以使用 SessionFactory.Default = “MySQL2″指定默认连接。
为防止 SQL 注入,你也使用带参数方法:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > sql </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "select * from Person where Id = @Id;" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >IDictionary</span><span class = "pun" >&</span><span class = "pln" >lt</span><span class = "pun" >;</span><span class = "kwd" > string </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > object </span><span class = "pun" >&</span><span class = "pln" >gt</span><span class = "pun" >;</span><span class = "pln" > parameters </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Dictionary</span><span class = "pun" >&</span><span class = "pln" >lt</span><span class = "pun" >;</span><span class = "kwd" > string </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > object </span><span class = "pun" >&</span><span class = "pln" >gt</span><span class = "pun" >;();</span><span class = "pln" > parameters</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "pln" > </span><span class = "str" > "@Id" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "lit" >5</span><span class = "pln" > </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "typ" >DataTable</span><span class = "pln" > dt </span><span class = "pun" >=</span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >ExecuteDataTable</span><span class = "pun" >(</span><span class = "pln" > sql</span><span class = "pun" >,</span><span class = "pln" > parameters </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span> |
与此类似的还有ExecuteScalar、ExecuteDataReader、ExecuteDataTable、ExecuteDataSet等方法。
如何进行分页查询:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > sql </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "select * from User where CreateTime < @CreateTime" </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >IDictionary</span><span class = "pun" >&</span><span class = "pln" >lt</span><span class = "pun" >;</span><span class = "kwd" > string </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > object </span><span class = "pun" >&</span><span class = "pln" >gt</span><span class = "pun" >;</span><span class = "pln" > parameters </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Dictionary</span><span class = "pun" >&</span><span class = "pln" >lt</span><span class = "pun" >;</span><span class = "kwd" > string </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "kwd" > object </span><span class = "pun" >&</span><span class = "pln" >gt</span><span class = "pun" >;();</span><span class = "pln" > parameters</span><span class = "pun" >.</span><span class = "typ" >Add</span><span class = "pun" >(</span><span class = "pln" > </span><span class = "str" > "@CreateTime" </span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >DateTime</span><span class = "pun" >.</span><span class = "typ" >Now</span><span class = "pln" > </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "com" > // 查询第2页,每页10条,并根据 CreateTime 字段降序排列</span><span class="pln"> </span><span class = "typ" >PageQueryResult</span><span class = "pln" > result </span><span class = "pun" >=</span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >ExecutePageQuery</span><span class = "pun" >(</span><span class = "pln" > sql01</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "lit" >2</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "lit" >10</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "str" > "CreateTime DESC" </span><span class = "pun" >,</span><span class = "pln" > parameters </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span> |
如何进行数据新增:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > person </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Person</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "com" > // person.Id = 1; 若Id字段为自增类型,无需指定。</span><span class="pln"> person</span><span class = "pun" >.</span><span class = "typ" >Name</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "test01" </span><span class = "pun" >;</span><span class = "pln" > person</span><span class = "pun" >.</span><span class = "typ" >CreateTime</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >DateTime</span><span class = "pun" >.</span><span class = "typ" >Now</span><span class = "pun" >;</span><span class = "pln" > person</span><span class = "pun" >.</span><span class = "typ" >IsActive</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > true </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > int </span><span class = "pln" > i </span><span class = "pun" >=</span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >Insert</span><span class = "pun" >(</span><span class = "pln" > person </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span> |
如何进行数据更新:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > person </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Person</span><span class = "pun" >();</span><span class = "pln" > person</span><span class = "pun" >.</span><span class = "typ" >Id</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "lit" >1</span><span class = "pun" >;</span><span class = "pln" > person</span><span class = "pun" >.</span><span class = "typ" >Name</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "test01" </span><span class = "pun" >;</span><span class = "pln" > person</span><span class = "pun" >.</span><span class = "typ" >CreateTime</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >DateTime</span><span class = "pun" >.</span><span class = "typ" >Now</span><span class = "pun" >;</span><span class = "pln" > person</span><span class = "pun" >.</span><span class = "typ" >IsActive</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > true </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "com" > // 在调用此方法时,务必指定实例的主键值。</span><span class="pln"> </span><span class = "kwd" > int </span><span class = "pln" > i </span><span class = "pun" >=</span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >Update</span><span class = "pun" >(</span><span class = "pln" > person </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span> |
或者你也可以批量更新:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > person </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Person</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "com" > // person.Id = 1;</span><span class="pln"> person</span><span class = "pun" >.</span><span class = "typ" >Name</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "test01" </span><span class = "pun" >;</span><span class = "pln" > person</span><span class = "pun" >.</span><span class = "typ" >CreateTime</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >DateTime</span><span class = "pun" >.</span><span class = "typ" >Now</span><span class = "pun" >;</span><span class = "pln" > person</span><span class = "pun" >.</span><span class = "typ" >IsActive</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > true </span><span class = "pun" >;</span><span class = "pln" > </span><span class = "com" > // 在调用此方法时,不需要指定主键值,且不会更新主键字段</span><span class="pln"> session</span><span class = "pun" >.</span><span class = "typ" >Update</span><span class = "pun" >().</span><span class = "typ" >Set</span><span class = "pun" >(</span><span class = "pln" > person </span><span class = "pun" >).</span><span class = "typ" >Where</span><span class = "pun" >(</span><span class = "pln" > s </span><span class = "pun" >=&</span><span class = "pln" >gt</span><span class = "pun" >;</span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >IsActive</span><span class = "pln" > </span><span class = "pun" >==</span><span class = "pln" > </span><span class = "kwd" > false </span><span class = "pln" > </span><span class = "pun" >).</span><span class = "typ" >Execute</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "pun" >}</span> |
如何进行数据删除:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > person </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "typ" >Person</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >Id</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "lit" >1</span><span class = "pln" > </span><span class = "pun" >};</span><span class = "pln" > </span><span class = "com" > // 在调用此方法时,需要指定主键值</span><span class="pln"> session</span><span class = "pun" >.</span><span class = "typ" >Delete</span><span class = "pun" >(</span><span class = "pln" > person </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span> |
或者你也可以批量删除:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "com" > // 在调用此方法时,不需要指定主键值</span><span class="pln"> session</span><span class = "pun" >.</span><span class = "typ" >Delete</span><span class = "pun" >().</span><span class = "typ" >Where</span><span class = "pun" >(</span><span class = "pln" > s </span><span class = "pun" >=&</span><span class = "pln" >gt</span><span class = "pun" >;</span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >IsActive</span><span class = "pln" > </span><span class = "pun" >==</span><span class = "pln" > </span><span class = "kwd" > false </span><span class = "pln" > </span><span class = "pun" >).</span><span class = "typ" >Execute</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "pun" >}</span> |
如何进行单表查询:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > queryable </span><span class = "pun" >=</span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >Find</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >.</span><span class = "typ" >Where</span><span class = "pun" >(</span><span class = "pln" > s </span><span class = "pun" >=&</span><span class = "pln" >gt</span><span class = "pun" >;</span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >Name</span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "str" > "a" </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >.</span><span class = "typ" >Where</span><span class = "pun" >(</span><span class = "pln" > s </span><span class = "pun" >=&</span><span class = "pln" >gt</span><span class = "pun" >;</span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >CreateTime</span><span class = "pln" > </span><span class = "pun" >&</span><span class = "pln" >lt</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "typ" >DateTime</span><span class = "pun" >.</span><span class = "typ" >Now</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >.</span><span class = "typ" >OrderBy</span><span class = "pun" >(</span><span class = "pln" > s </span><span class = "pun" >=&</span><span class = "pln" >gt</span><span class = "pun" >;</span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >CreateTime</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >.</span><span class = "typ" >Skip</span><span class = "pun" >(</span><span class = "lit" >5</span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >.</span><span class = "typ" >Take</span><span class = "pun" >(</span><span class = "lit" >10</span><span class = "pun" >);</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > list </span><span class = "pun" >=</span><span class = "pln" > queryable</span><span class = "pun" >.</span><span class = "typ" >ToList</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > count </span><span class = "pun" >=</span><span class = "pln" > queryable</span><span class = "pun" >.</span><span class = "typ" >Count</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > first </span><span class = "pun" >=</span><span class = "pln" > queryable</span><span class = "pun" >.</span><span class = "typ" >FirstOrDefault</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "kwd" > var </span><span class = "pln" > queryable1 </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "kwd" > from </span><span class = "pln" > s </span><span class = "kwd" > in </span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >Find</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "kwd" > where </span><span class = "pln" > s </span><span class = "pun" >=&</span><span class = "pln" >gt</span><span class = "pun" >;</span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >Name</span><span class = "pun" >.</span><span class = "typ" >Contains</span><span class = "pun" >(</span><span class = "str" > "a" </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "kwd" > orderby </span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >CreateTime</span><span class = "pln" > </span><span class = "kwd" > descending </span><span class = "pln" > </span><span class = "kwd" > select </span><span class = "pln" > </span><span class = "kwd" > new </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "typ" >Id</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >Id</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >Name</span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > s</span><span class = "pun" >.</span><span class = "typ" >Name</span><span class = "pln" > </span><span class = "pun" >};</span><span class = "pln" > </span><span class = "com" > // ...</span><span class="pln"> </span><span class = "pun" >}</span> |
目前只支持对单表的LINQ查询,且为了降低复杂度,后期也不打算支持多表查询,对函数的支持也有限,仅支持string类型的StartsWith、EndsWith、Contains、Equals、IsNullOrEmpty等方法,对于其他方法后期将会继续完善。
如果你需要实现一个复杂的查询并将其转换成对象,你也可以这样:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > sql </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "str" > "..." </span><span class = "pun" >;</span><span class = "pln" > T </span><span class = "lit" >@ object </span><span class = "pln" > </span><span class = "pun" >=</span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >Find</span><span class = "pun" >(</span><span class = "pln" > sql </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span> |
如何支持事务处理:
<span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >ISession</span><span class = "pln" > session </span><span class = "pun" >=</span><span class = "pln" > </span><span class = "typ" >SessionFactory</span><span class = "pun" >.</span><span class = "typ" >CreateDefaultSession</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > using </span><span class = "pun" >(</span><span class = "pln" > </span><span class = "typ" >DbTransaction</span><span class = "pln" > transaction </span><span class = "pun" >=</span><span class = "pln" > session</span><span class = "pun" >.</span><span class = "typ" >BeginTransaction</span><span class = "pun" >()</span><span class = "pln" > </span><span class = "pun" >)</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "com" > // ...</span><span class="pln"> </span><span class = "com" > // ...</span><span class="pln"> transaction</span><span class = "pun" >.</span><span class = "typ" >Commit</span><span class = "pun" >();</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span> |
SessionHelper的使用:
SessionHelper对session对象的方法进行了静态封装,如果你只是需要执行单条语句,并马上关闭连接,你可以使用 SessionHelper 类中提供的一些辅助方法。
5、如何定义实体类
<span class = "pun" >[</span><span class = "typ" >Serializable</span><span class = "pun" >]</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > class </span><span class = "pln" > </span><span class = "typ" >Person</span><span class = "pln" > </span><span class = "pun" >:</span><span class = "pln" > </span><span class = "typ" >EntityObject</span><span class = "pln" > </span><span class = "com" > // 需继承与 EntityObject 类</span><span class="pln"> </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > int </span><span class = "pln" > m_Id</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > m_Name</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > int </span><span class = "pun" >?</span><span class = "pln" > m_Age</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > decimal </span><span class = "pun" >?</span><span class = "pln" > m_Money</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "typ" >DateTime</span><span class = "pln" > m_CreateTime</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > private </span><span class = "pln" > </span><span class = "kwd" > bool </span><span class = "pln" > m_IsActive</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >[</span><span class = "typ" >PrimaryKey</span><span class = "pun" >,</span><span class = "pln" > </span><span class = "typ" >AutoIncrease</span><span class = "pun" >]</span><span class = "pln" > </span><span class = "com" > // 如果是自增字段,标记为 AutoIncrease;如果是主键标记为 PrimaryKey</span><span class="pln"> </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > int </span><span class = "pln" > </span><span class = "typ" >Id</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_Id</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_Id </span><span class = "pun" >=</span><span class = "pln" > value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >OnPropertyChanged</span><span class = "pun" >(</span><span class = "pln" > </span><span class = "str" > "Id" </span><span class = "pun" >,</span><span class = "pln" > value </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > string </span><span class = "pln" > </span><span class = "typ" >Name</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_Name</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_Name </span><span class = "pun" >=</span><span class = "pln" > value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >OnPropertyChanged</span><span class = "pun" >(</span><span class = "pln" > </span><span class = "str" > "Name" </span><span class = "pun" >,</span><span class = "pln" > value </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > int </span><span class = "pun" >?</span><span class = "pln" > </span><span class = "typ" >Age</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_Age</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_Age </span><span class = "pun" >=</span><span class = "pln" > value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >OnPropertyChanged</span><span class = "pun" >(</span><span class = "pln" > </span><span class = "str" > "Age" </span><span class = "pun" >,</span><span class = "pln" > value </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > decimal </span><span class = "pun" >?</span><span class = "pln" > </span><span class = "typ" >Money</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_Money</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_Money </span><span class = "pun" >=</span><span class = "pln" > value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >OnPropertyChanged</span><span class = "pun" >(</span><span class = "pln" > </span><span class = "str" > "Money" </span><span class = "pun" >,</span><span class = "pln" > value </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "typ" >DateTime</span><span class = "pln" > </span><span class = "typ" >CreateTime</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_CreateTime</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_CreateTime </span><span class = "pun" >=</span><span class = "pln" > value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >OnPropertyChanged</span><span class = "pun" >(</span><span class = "pln" > </span><span class = "str" > "CreateTime" </span><span class = "pun" >,</span><span class = "pln" > value </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > public </span><span class = "pln" > </span><span class = "kwd" > bool </span><span class = "pln" > </span><span class = "typ" >IsActive</span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > get </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > return </span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_IsActive</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "kwd" > set </span><span class = "pln" > </span><span class = "pun" >{</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "pln" >m_IsActive </span><span class = "pun" >=</span><span class = "pln" > value</span><span class = "pun" >;</span><span class = "pln" > </span><span class = "kwd" > this </span><span class = "pun" >.</span><span class = "typ" >OnPropertyChanged</span><span class = "pun" >(</span><span class = "pln" > </span><span class = "str" > "IsActive" </span><span class = "pun" >,</span><span class = "pln" > value </span><span class = "pun" >);</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span><span class = "pln" > </span><span class = "pun" >}</span> |
6、总结
因作者时间关系,组件目前并非十分完善,测试工作也只简单的进行了一部分,但您可以完全放心的应用于商业项目中,如遇到问题,作者将尽可能的解决。后期还将持续优化,感兴趣且愿意参与开源项目的小伙伴们,请加QQ群:338570336。
另如使用中发现bug,真心希望能分享出来,我们一并修正并改进。