NHibernate已经足够了吗?
并且在博客园开了一个专栏写了一系列的文章来介绍如何使用它。到2005年后半年的时候,国内类似的代码生成工具已经开始“泛滥”了,O/RM一下子流行起来。在2005年底,我开始关注NHibernate,并逐渐转移到NHibernate上面来,对XCodeFactory的依赖也越来越小了。毕竟,NHibernate是如此得强大,以至于我不再需要XCodeFactory。但是,对于经常要编写数据库访问代码的.NET开发人员而言,拥有NHibernate就已经足够了吗?我认为是不够的。NHibernate在基于对象方面做得非常好,这也是它初始的目标,它非常出色地实现了这个目标。但是在O/RM之外了?比如,我们需要进行批量的更新、删除等,使用NHibernate进行类似的操作不仅繁琐而且效率低下。当然,这些内容不是NHibernate的职责,NHibernate也不用关心这些O/RM之外的东西。但是,我们也许都知道了,NHibernate需要另外一个工具来作为有力的补充,这个补充主要基于关系、而不是对象来操作数据库中的数据。有人选择了EnterpriseLibrary中的数据访问Block作为O/RM之外的补充,这很不错。而DataRabbit是另外一个选择。相信来我blog的朋友都一定知道ESFramework,ESFramework源于EnterpriseServerBase类库的Network命名空间,而DataRabbit来源于EnterpriseServerBase类库的DataAccess命名空间,EnterpriseServerBase.DataAccess也是XCodeFactory核心库。DataRabbit中包含多个基于关系的数据访问接口,并且内置了对SqlServer、Oracle、Ole的支持,如果要支持其它类型的数据库,只需实现相应的接口即可,并且可以插件的形式提供。(1)简化通常的数据访问,体现在IADOBase接口,IADOBase接口和以下所有接口均独立于数据库类型。(2)数据分页 IPagerManager(3)事务 Transaction(4)分布式事务 Distributed(5)操作数据大纲(DataSchema) IDataSchemaOperator ,比如获取某个表的大纲结构(Column信息、主键信息、外键信息),依据大纲在指定的数据库中创建表(6)数据库适配器插件 IADOBaseAddin(7)简单数据迁移 SimpleDataTransfer这些接口将在后面的系列文章中逐一介绍。下面也看一个分页的例子,来点感性的认识。
nhibernate已经足够了吗
并且在博客园开了一个专栏写了一系列的文章来介绍如何使用它。到2005年后半年的时候,国内类似的代码生成工具已经开始“泛滥”了,O/RM一下子流行起来。在2005年底,我开始关注NHibernate,并逐渐转移到NHibernate上面来,对XCodeFactory的依赖也越来越小了。毕竟,NHibernate是如此得强大,以至于我不再需要XCodeFactory。
但是,对于经常要编写数据库访问代码的.NET开发人员而言,拥有NHibernate就已经足够了吗?我认为是不够的。NHibernate在基于对象方面做得非常好,这也是它初始的目标,它非常出色地实现了这个目标。但是在O/RM之外了?比如,我们需要进行批量的更新、删除等,使用NHibernate进行类似的操作不仅繁琐而且效率低下。当然,这些内容不是NHibernate的职责,NHibernate也不用关心这些O/RM之外的东西。但是,我们也许都知道了,NHibernate需要另外一个工具来作为有力的补充,这个补充主要基于关系、而不是对象来操作数据库中的数据。
有人选择了EnterpriseLibrary中的数据访问Block作为O/RM之外的补充,这很不错。而DataRabbit是另外一个选择。
相信来我blog的朋友都一定知道ESFramework,ESFramework源于EnterpriseServerBase类库的Network命名空间,而DataRabbit来源于EnterpriseServerBase类库的DataAccess命名空间,EnterpriseServerBase.DataAccess也是XCodeFactory核心库。DataRabbit中包含多个基于关系的数据访问接口,并且内置了对SqlServer、Oracle、Ole的支持,如果要支持其它类型的数据库,只需实现相应的接口即可,并且可以插件的形式提供。
(1)简化通常的数据访问,体现在IADOBase接口,IADOBase接口和以下所有接口均独立于数据库类型。
(2)数据分页 IPagerManager
(3)事务 Transaction
(4)分布式事务 Distributed
(5)操作数据大纲(DataSchema) IDataSchemaOperator ,比如获取某个表的大纲结构(Column信息、主键信息、外键信息),依据大纲在指定的数据库中创建表
(6)数据库适配器插件 IADOBaseAddin
(7)简单数据迁移 SimpleDataTransfer
这些接口将在后面的系列文章中逐一介绍。下面也看一个分页的例子,来点感性的认识。
Entity Framework和NHibernate的区别是什么?
1.可以这么说。。都是ORM框架不过,EF秉承微软的出品的一贯作风,很难容易上手。另外,EF可以很方便的按照数据库生成实体类,而NH默认没有这个能力,必须用其他代码生成方案。我目前对两者都不是很深入,但是从学习成本上看,NH的成本远超EF。而在性能方面,我个人认为二者没有绝对差距。。。关键还是编程人员的应用,以及调优。基本上都会说linq to sql是轻量级的框架,而ef,nh则是重量级的。。。引用一段“LINQ to SQL和Entity Framework各有所长,LINQ to SQL是一个轻量级的ORM框架,旨在为Microsoft SQL Server数据库提供快速的应用程序开发,其优点是易于使用、简单、高性能。而Entity Framework的优点在于:其为创建数据库架构和实体类之间的映射提供了更好的灵活性,它还通过提供程序支持除了SQL Server之外的第三方数据库。"我是没看出来。。而且我个人觉得单从易用性来看,ef以及相当简单了。。
NHibernate和LINQ哪个好
相似点并不多,异同如下……建议按需求选择!NHibernate是ORM,是把Java的Hibernate核心部分移植到Microsoft .NET Framework上。它是一个对象关系映射工具,其目标是把.NET对象持久化到关系数据库。LINQ是一种技术,可以对数据进行查询,可以对XML,Object,DataSet,SQL,进行查询,以下是MSDN的定义语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上。借助于 LINQ,查询现在已是高级语言构造,就如同类、方法、事件等等。而LINQ TO SQL则是ORM,实现和NHibernate类似的功能,实现对象关系映射,不过没有NHibernate强大,只能支持SQL ServerEF的话是微软开发的ORM框架