NET开源项目介绍及资源推荐:数据持久层 1
点击次数:23 次 发布日期:2008-11-26 12:01:16 作者:源代码网
|
源代码网推荐 源代码网推荐 1.NHibernate 源代码网推荐 源代码网推荐 2.NBear 源代码网推荐 源代码网推荐 3.Castle ActiveRecord 源代码网推荐 源代码网推荐 4.iBATIS.NET 源代码网推荐 源代码网推荐 5.DAAB 源代码网推荐 源代码网推荐 附加介绍:DLinq 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 一.NHibernate 源代码网推荐 源代码网推荐 提起NHibernate,相信大家都不陌生,NHibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具,它从数据库底层来持久化.Net对象到关系型数据库,NHibernate为我们完成这一切,而不用自己写SQL语句去操作数据库对象,所写的代码仅仅和对象关联,NHibernat自动产生SQL语句,并确保对象提交到正确的表和字段中去.大量减少开发时人工使用SQL和ADO.NET处理数据的时间. NHibernate可以帮助消除或者包装那些针对特定数据库的SQL代码,并且把结果集从表格的表示形式转换到一系列的对象去。NHibernate采用XML文件配置的方式,每一个实体类都会对应一个映射文件,如下面的例子: 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 public class User 源代码网推荐 { 源代码网推荐 public User() 源代码网推荐 { 源代码网推荐 } 源代码网推荐 private string id; 源代码网推荐 private string userName; 源代码网推荐 private string password; 源代码网推荐 private string emailAddress; 源代码网推荐 private DateTime lastLogon; 源代码网推荐 public string Id 源代码网推荐 { 源代码网推荐 get { return id; } 源代码网推荐 set { id = value; } 源代码网推荐 } 源代码网推荐 public string UserName 源代码网推荐 { 源代码网推荐 get { return userName; } 源代码网推荐 set { userName = value; } 源代码网推荐 } 源代码网推荐 public string Password 源代码网推荐 { 源代码网推荐 get { return password; } 源代码网推荐 set { password = value; } 源代码网推荐 } 源代码网推荐 public string EmailAddress 源代码网推荐 { 源代码网推荐 get { return emailAddress; } 源代码网推荐 set { emailAddress = value; } 源代码网推荐 } 源代码网推荐 public DateTime LastLogon 源代码网推荐 { 源代码网推荐 get { return lastLogon; } 源代码网推荐 set { lastLogon = value; } 源代码网推荐 } 源代码网推荐 }它对应的.hbm.xml文件如下:<?xml version="1.0" encoding="utf-8" ?> 源代码网推荐 源代码网推荐 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.0"> 源代码网推荐 源代码网推荐 <class name="NHibernateWebDemo.Model.User, NHibernateWebDemo.Model" table="users"> 源代码网推荐 源代码网推荐 <id name="Id" column="LogonId" type="String" length="20"> 源代码网推荐 源代码网推荐 <generator class="assigned" /> 源代码网推荐 源代码网推荐 </id> 源代码网推荐 源代码网推荐 <property name="UserName" column= "Name" type="String" length="40"/> 源代码网推荐 源代码网推荐 <property name="Password" type="String" length="20"/> 源代码网推荐 源代码网推荐 <property name="EmailAddress" type="String" length="40"/> 源代码网推荐 源代码网推荐 <property name="LastLogon" type="DateTime"/> 源代码网推荐 源代码网推荐 </class> 源代码网推荐 源代码网推荐 </hibernate-mapping> 源代码网推荐 官方主页:http://www.nhibernate.org/ 源代码网推荐 源代码网推荐 学习资源 源代码网推荐 源代码网推荐 园子里首推DDL的Blog:http://www.cnblogs.com/renrenqq/,有NHibernate文档的中文翻译以及DLL写的一些非常优秀的NHibernate文章。 源代码网推荐 源代码网推荐 大名鼎鼎的张老三:http://blog.csdn.net/billy_zh/category/22383.aspx 源代码网推荐 源代码网推荐 Aero的Nhibernate学习手记系列:http://www.cnblogs.com/chwkai/category/32514.html 源代码网推荐 源代码网推荐 无心之柳的Blog也非常值得推荐:http://www.cnblogs.com/9527/ 源代码网推荐 源代码网推荐 博客园O/R Mapping团队:http://www.cnblogs.com/team/ORMapping.html 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 二.NBear 源代码网推荐 源代码网推荐 园子里Teddy开发的NBear大家都非常熟悉,现在已经发布了3.0正式版。NBear包含的组件不仅仅是数据持久层,还包含了IOC,分布式组件和Web组件。看一下Teddy对于NBear的介绍: 源代码网推荐 源代码网推荐 NBear的核心包括一个泛型、强类型的的ORM数据持久化接口、一组相关的Entity相关组件、高性能分布式组件、Web组件,因此: 源代码网推荐 源代码网推荐 1、NBear最适合开发各类基于ASP.NET 2.0,对性能要求较高的Web程序。NBear.Web组件提供了许多加速Web开发的组件,将使您基于标准 ASP.NET方式的开发效率大大提高;同时,简单易用、性能突出的泛型持久化支持,则将使您能够将更多注意力集中到业务开发,同时也不会有传统ORM持久化框架的性能问题和繁琐配置需要(NBear几乎不需手动配置,性能则接近DAAB)。 源代码网推荐 源代码网推荐 2、基于MQ和.Net Remoting的高性能分布式组件,将使您开发和维护分布式程序更加容易。一个基于NBear.IoC模块的开发的应用程序甚至无需重新编译就能部属为真正的负载均衡的分布式程序。 源代码网推荐 源代码网推荐 3、对于桌面应用程序,NBear同样是一个几乎没有什么学习曲线(多少人会为写一个小小的日历程序而仔细研究透彻Hibernate的参考手册?)、实用高效的数据持久化方案。 源代码网推荐 源代码网推荐 4、随着NBearV3带来的全面的ORM支持、更详细的文档和教程,和全面的代码生成工具,NBear也已经可以被用于企业级程序开发。 源代码网推荐 源代码网推荐 官方首页:http://teddyma.cnblogs.com/articles/Ilungasoft_Framework.html 源代码网推荐 源代码网推荐 学习资源 源代码网推荐 源代码网推荐 学习资源当然首推Teddy的个人Blog:http://www.cnblogs.com/teddyma/ 源代码网推荐 源代码网推荐 博客园NB团队:http://nbteam.cnblogs.com/ 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 三.Castle ActiveRecord 源代码网推荐 源代码网推荐 ActiveRecord是Castle中的一个子项目,现在的版本是RC1。它同样是一个非常优秀的持久层框架,在底层封装了NHibernate,改用Attribute来代替配置文件,这样就不用再像NHibernate那样去编写复杂的配置文件。如下代码片断所示: 源代码网推荐 源代码网推荐 [ActiveRecord("Users")] 源代码网推荐 public class User : ActiveRecordBase 源代码网推荐 { 源代码网推荐 private int _id; 源代码网推荐 private string _name; 源代码网推荐 private string _password; 源代码网推荐 private string _emailAddress; 源代码网推荐 private DateTime _lastLogon; 源代码网推荐 [PrimaryKey(PrimaryKeyType.Identity, "LogonID")] 源代码网推荐 public int Id 源代码网推荐 { 源代码网推荐 get { return _id; } 源代码网推荐 set { _id = value; } 源代码网推荐 } 源代码网推荐 [Property("LogonName")] 源代码网推荐 public string Name 源代码网推荐 { 源代码网推荐 get { return _name; } 源代码网推荐 set { _name = value; } 源代码网推荐 } 源代码网推荐 [Property("Password")] 源代码网推荐 public string Password 源代码网推荐 { 源代码网推荐 get { return _password; } 源代码网推荐 set { _password = value; } 源代码网推荐 } 源代码网推荐 [Property("EmailAddress")] 源代码网推荐 public string Address 源代码网推荐 { 源代码网推荐 get { return _emailAddress; } 源代码网推荐 set { _emailAddress = value; } 源代码网推荐 } 源代码网推荐 [Property("LastLogon")] 源代码网推荐 public DateTime LastLogon 源代码网推荐 { 源代码网推荐 get { return _lastLogon; } 源代码网推荐 set { _lastLogon = value; } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 官方主页:http://www.castleproject.org 源代码网推荐 源代码网推荐 学习资源 源代码网推荐 源代码网推荐 官方文档:http://www.castleproject.org/activerecord/documentation/v1rc1/index.html 源代码网推荐 源代码网推荐 叶子的家:http://wj.cnblogs.com/ 源代码网推荐 源代码网推荐 TerryLee的Castle开发系列: 源代码网推荐 源代码网推荐 http://terrylee.cnblogs.com/archive/2006/04/28/castl_ioc_article.html 源代码网推荐 源代码网推荐 Castle项目成员之一ayende的Blog:http://www.ayende.com/Blog/ 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 四.iBATIS.NET 源代码网推荐 源代码网推荐 iBATIS.NET分为DataMapper和DataAccess两部分,应该说DataMapper是这个框架的核心,DataMapper使用XML文件来实现从实体到SQL statements的映射,学习起来非常简单,是用DataMapper后,我们可以自由的使用SQL语句或者存储过程;DataAccess允许我们通过一个简单的接口来操作数据,而不必了解底层实现的细节。如下代码片断: 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 [Serializable] 源代码网推荐 public class Person 源代码网推荐 { 源代码网推荐 private int id; 源代码网推荐 private string firstName; 源代码网推荐 private string lastName; 源代码网推荐 private DateTime? birthDate; 源代码网推荐 private double? weightInKilograms; 源代码网推荐 private double? heightInMeters; 源代码网推荐 public Person() { } 源代码网推荐 public int Id 源代码网推荐 { 源代码网推荐 get { return id; } 源代码网推荐 set { id = value; } 源代码网推荐 } 源代码网推荐 public string FirstName 源代码网推荐 { 源代码网推荐 get { return firstName; } 源代码网推荐 set { firstName = value; } 源代码网推荐 } 源代码网推荐 public string LastName 源代码网推荐 { 源代码网推荐 get { return lastName; } 源代码网推荐 set { lastName = value; } 源代码网推荐 } 源代码网推荐 public DateTime? BirthDate 源代码网推荐 { 源代码网推荐 get { return birthDate; } 源代码网推荐 set { birthDate = value; } 源代码网推荐 } 源代码网推荐 public double? WeightInKilograms 源代码网推荐 { 源代码网推荐 get { return weightInKilograms; } 源代码网推荐 set { weightInKilograms = value; } 源代码网推荐 } 源代码网推荐 public double? HeightInMeters 源代码网推荐 { 源代码网推荐 get { return heightInMeters; } 源代码网推荐 set { heightInMeters = value; } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 映射文件如下: 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 <?xml version="1.0" encoding="utf-8" ?> 源代码网推荐 <sqlMap namespace="Person" xmlns="http://ibatis.apache.org/mapping" 源代码网推荐 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 源代码网推荐 <alias> 源代码网推荐 <typeAlias alias="Person" type="IBatisNetDemo.Domain.Person,IBatisNetDemo" /> 源代码网推荐 </alias> 源代码网推荐 源代码网推荐 <resultMaps> 源代码网推荐 <resultMap id="SelectAllResult" class="Person"> 源代码网推荐 <result property="Id" column="PER_ID" /> 源代码网推荐 <result property="FirstName" column="PER_FIRST_NAME" /> 源代码网推荐 <result property="LastName" column="PER_LAST_NAME" /> 源代码网推荐 <result property="BirthDate" column="PER_BIRTH_DATE" /> 源代码网推荐 <result property="WeightInKilograms" column="PER_WEIGHT_KG" /> 源代码网推荐 <result property="HeightInMeters" column="PER_HEIGHT_M" /> 源代码网推荐 </resultMap> 源代码网推荐 </resultMaps> 源代码网推荐 源代码网推荐 <statements> 源代码网推荐 <select id="SelectAllPerson" resultMap="SelectAllResult"> 源代码网推荐 select 源代码网推荐 PER_ID, 源代码网推荐 PER_FIRST_NAME, 源代码网推荐 PER_LAST_NAME, 源代码网推荐 PER_BIRTH_DATE, 源代码网推荐 PER_WEIGHT_KG, 源代码网推荐 PER_HEIGHT_M 源代码网推荐 from PERSON 源代码网推荐 </select> 源代码网推荐 源代码网推荐 <select id="SelectByPersonId" resultClass="Person" parameterClass="int"> 源代码网推荐 select 源代码网推荐 PER_ID, 源代码网推荐 PER_FIRST_NAME, 源代码网推荐 PER_LAST_NAME, 源代码网推荐 PER_BIRTH_DATE, 源代码网推荐 PER_WEIGHT_KG, 源代码网推荐 PER_HEIGHT_M 源代码网推荐 from PERSON 源代码网推荐 where PER_ID = #value# 源代码网推荐 </select> 源代码网推荐 源代码网推荐 <insert id="InsertPerson" parameterclass="Person" > 源代码网推荐 <selectKey property="Id" type="post" resultClass="int"> 源代码网推荐 ${selectKey} 源代码网推荐 </selectKey> 源代码网推荐 insert into Person 源代码网推荐 ( PER_FIRST_NAME, 源代码网推荐 PER_LAST_NAME, 源代码网推荐 PER_BIRTH_DATE, 源代码网推荐 PER_WEIGHT_KG, 源代码网推荐 PER_HEIGHT_M) 源代码网推荐 values 源代码网推荐 (#FirstName#,#LastName#,#BirthDate#, #WeightInKilograms#, #HeightInMeters#) 源代码网推荐 </insert> 源代码网推荐 源代码网推荐 <update id="UpdatePerson" parameterclass="Person"> 源代码网推荐 <![CDATA[ update Person set 源代码网推荐 PER_FIRST_NAME =#FirstName#, 源代码网推荐 PER_LAST_NAME =#LastName#, 源代码网推荐 PER_BIRTH_DATE =#BirthDate#, 源代码网推荐 PER_WEIGHT_KG=#WeightInKilograms#, 源代码网推荐 PER_HEIGHT_M=#HeightInMeters# 源代码网推荐 where 源代码网推荐 PER_ID = #Id# ]]> 源代码网推荐 </update> 源代码网推荐 源代码网推荐 <delete id="DeletePerson" parameterclass="Person"> 源代码网推荐 delete from Person 源代码网推荐 where 源代码网推荐 PER_ID = #Id# 源代码网推荐 </delete> 源代码网推荐 </statements> 源代码网推荐 </sqlMap>官方主页:http://ibatis.apache.org/ 源代码网推荐 学习资源 源代码网推荐 官方文档:http://opensource.atlassian.com/confluence/oss/display/IBATIS/Quick+Start+Guide 源代码网推荐 源代码网推荐 善友的iBATIS.NET开发指南系列:http://www.cnblogs.com/shanyou/archive/2006/04/29/388610.html 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
