细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一(转)

ADO.NET Entity Framework        ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,

早期被称为 ObjectSpace,现已经包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5

Service Pack 1 中发表。

Entity Framework的优势就是拥有更好的LINQ提供程序、文档,并且是由微软所支持的。

(ps:笔者在转载的时候试图寻找更加详细的说明,但未成功...一下是个人的一些使用见解)

Entity Framework目前最新版本是Entity Framework 5.0,在结构上类似与Hibernate(微软模仿Hibernate而成立的项目)
    
          在配置与使用方面非常方便,只需要在项目内添加相应的数据库实体模型即可 (Entity Framework Data Model)

目前,许多数据库已经支持Entity Framework,据我所知有SQL Server,Mysql,Oracle这几种(其他的没用过...)。

官方主页: http://entityframework.codeplex.com/

一.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/

二.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

三.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.ibilibli.com/  

细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一的更多相关文章

  1. Django中的ORM框架使用小技巧

      Django中的ORM框架使用小技巧 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. Django对各个数据提供了很好的支持,包括PostgreSQL,MySQL,SQLite ...

  2. “造轮运动”之 ORM框架系列(二)~ 说说我心目中的ORM框架

    ORM概念解析 首先梳理一下ORM的概念,ORM的全拼是Object Relation Mapping (对象关系映射),其中Object就是面向对象语言中的对象,本文使用的是c#语言,所以就是.ne ...

  3. Mego(1) - NET中主流ORM框架性能对比

    从刚刚开始接触ORM到现在已有超过八年时间,用过了不少ORM框架也了解了不少ORM框架,看过N种关于ORM框架的相关资料与评论,各种言论让人很难选择.在ORM的众多问题中最突出的问题是关于性能方面的问 ...

  4. 细数JS中实用且强大的操作符&运算符

    目录 1,前言 2,代码+应用 2.1,短路运算符 || 2.2,短路运算符 && 2.3,零合并操作符 ?? 2.4,可选链操作符 ?. 2.5,位运算符 & 和 | 2.6 ...

  5. Python笔记·第四章—— 细数Python中的数据类型以及他们的方法

    一.数据类型的种类及主要功能 1.数字类型 数字类型主要是用来计算,它分为整数类型int和浮点类型float 2.布尔类型 布尔类型主要是用于判断,它分为真True和False两种 3.字符串类型 字 ...

  6. 细数Python中的数据类型以及他们的方法

    一.数据类型的种类及主要功能 1.数字类型 数字类型主要是用来计算,它分为整数类型int和浮点类型float 2.布尔类型 布尔类型主要是用于判断,它分为真True和False两种 3.字符串类型 字 ...

  7. 细数C++中的for循环

    1.for(;;)这个是最基础最简单的for循环,从刚开始学习C语言的时候就知道的.for(int i = 0; i < 10; ++i){ }2.foreach完整的是for each(obj ...

  8. ORM框架-SQLAchemy使用

    一.ORM简介 orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的 ...

  9. flask 中的ORM

    1 响应(response) 1 什么是响应 响应就是由服务器端带给客户端的内容,对应着请求,响应可以是普通的字符串,模板 或重定向 return '普通字符串' return render_temp ...

随机推荐

  1. java第6次作业

    import java.util.ArrayList; import java.util.Collections; import java.util.Random; import java.util. ...

  2. 20151210study

    -----------------------------------------------------The election officials were not neutral.选举官员并不是 ...

  3. ue4 NewObject/StaticConstructObject_Internal/StaticAllocateObject/FObjectInitializer:对象创建和初始化

    UObject是一套很复杂的体系,之前读ue3代码时曾分析过其类型系统实现,主要是与UClass间的关系 现在转到ue4,发现那一块其实差不多,于是再重点备忘一下UObject本身的创建和初始化过程 ...

  4. CString 字符串截取_函数

    CString res;CString str = _T("abcdefghijklmn"); res = str.Mid(2,3);  //从第3位字母开始,共取3个字符ASSE ...

  5. cookie session URL重写 与考试

    状态管理.Cookie.Session.URL重写 HTTP协议:无状态的连接(每次连接都是新的请求)1.隐藏字段 <input type="hidden" name=&qu ...

  6. ASP数组全集,多维数组和一维数组[转]

    ASP数组是比较好用的装载大量数据的容器.1 定义数组 有两种方式:DIM和REDIM. DIM定义的是固定个数.数据类型的数组:而REDIM则不同,它可以定义不同类型的数据,也可以定义个数并非固定的 ...

  7. js高级应用

    特别板块:js跨域请求Tomcat6.tomcat7 跨域设置(包含html5 的CORS) 需要下载两个jar文件,cors-filter-1.7.jar,Java-property-utils-1 ...

  8. .net 常用的命名空间和类

    一.基础命名空间 l  System.Collections 包含了一些与集合相关的类型,比如列表,队列,位数组,哈希表和字典等. l  System.IO 包含了一些数据流类型并提供了文件和目录同步 ...

  9. 由Selenium1转变为Selenium2所遇到的问题

    1.使用ant脚本运行测试,报NoClassDefError,但使用junit方式运行或debug,都没有错误. 原因:找不到包,但具体是哪个包,不清楚:且为何使用junit方式运行就没有问题,也不清 ...

  10. zabbix3.0 微信告警

    首先需要申请一个企业号,其实公众号也可以,不过脚本不一样.而且公众号任何人都可以关注,有泄密的风险.企业号只有指定的人可以关注,安全性较高.申请企业号,需要一个绑定你本人开户银行卡的微信号. 申请网址 ...