不知道我怎么能解决这个问题,试图做一个unit testing的方法“GetByTitle” 这是我的定义: public class ArticleDAO : GenericNHibernateDAO(IArticle, int>, IArticleDAO { public IArticle GetByTitle(string title) { IQuery query = Session.CreateQuery("…") return query.UniqueResult<IArticle>(); } } public interface IArticleDAO { IArticle GetByTitle(string title); } unit testing: [Test] public void can_load_by_title() { _mockDaoFactory.Setup(x => x.GetArticleDao()) .Returns(_mockArticleDao.Object); _mockArticleDao.Setup(x => x.GetByTitle("some title")) .Returns(article1.Object); _articleManager.LoadArticle("some title"); Assert.IsNotNull(_articleManager.Article); } 运行testing给我的错误: System.ArgumentException: Invalid […]
很多人已经在networking上讨论过Entity Framework的第一个版本(也是在stackoverflow上),很显然,当我们已经有了像NHibernate这样更好的select的时候,这不是一个好的select。 但是我找不到entity framework4和NHibernate的比较。 我们可以说今天NHibernate是所有.NET ORM中的领导者,但我们可以期望Entity Framework 4从这个位置取代NHibernate。 我认为,如果微软真的在EF4中注入了非常好的function,它可以给NHibernate带来很好的竞争力,因为它具有Visual Studio集成,更易于使用,并且在大多数商店中始终给予MS产品优先select。
作为一个在现实世界的项目中没有使用任何一种技术的人,我想知道有没有人知道这两者是如何相互补充的,以及它们的function有多重叠?
现在,在你说之前:我做了 Google,我的hbm.xml文件是一个embedded式资源。 这是我打电话的代码: ISession session = GetCurrentSession(); var returnObject = session.Get<T>(Id); 这是我的类的映射文件: <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="HQData.Objects.SubCategory, HQData" table="SubCategory" lazy="true"> <id name="ID" column="ID" unsaved-value="0"> <generator class="identity" /> </id> <property name="Name" column="Name" /> <property name="NumberOfBuckets" column="NumberOfBuckets" /> <property name="SearchCriteriaOne" column="SearchCriteriaOne" /> <bag name="_Businesses" cascade="all"> <key column="SubCategoryId"/> <one-to-many class="HQData.Objects.Business, HQData"/> </bag> <bag name="_Buckets" cascade="all"> […]
我刚刚阅读了一篇关于NHibernate能够从系统时间(Guid.Comb)创build一个GUID的博客文章 ,从而避免了大量的数据库碎片。 您可以将其称为与SQL Server顺序ID等效的客户端。 有没有一种方法可以在我的Linq-to-Sql项目中使用类似的策略(通过在代码中生成Guid)?
什么是为NHibernate生成实体类和/或HBM文件和/或SQL脚本的最佳工具。 以下列表来自http://www.hibernate.org/365.html ,这是最好的,为什么? Moregen免费,开源(GPL)O / R发生器,可以合并到现有的Visual Studio项目。 还将更改合并到生成的类。 用于生成NHibernate O / R映射源代码的NConstruct Lite免费工具。 不同的数据库支持(Microsoft SQL Server,Oracle,Access)。 GENNIT NHibernate代码生成器使用WYSIWYG在线UMLdevise器免费/商业Web 2.0代码生成NHibernate代码。 GenWise Studio与NHibernate模板商业产品; 导入您现有的数据库并生成所有XML和类,包括工厂。 它也可以自动为你的NHibernate BO-Layer生成一个asp.net web应用程序。 HQL分析器和hbm.xml GUI编辑器 Mats Helander的ObjectMapper是一个支持NHibernate的映射GUI MyGeneration是一个基于模板的代码生成器GUI。 其模板库包含用于从数据库生成映射文件和类的模板。 AndroMDA是一个开源代码生成框架,使用模型驱动架构(MDA)将UML模型转换为可部署的组件。 它支持使用NHibernate作为持久性框架的数据访问层的生成。 NH的CodeSmith模板 NHibernate Helper Kit是一个VS2005插件,用于生成类和映射文件。 NConstruct – 智能软件工厂商业产品; 通过简单的向导程序,为信息系统的所有层生成完整的.NET C#源代码。 基于NHibernate的O / R映射。 对于WinForms和ASP.NET 2.0。
我一直在找Linne to Nhibernate的一些示例项目或教程。 有谁知道任何好的?
在我的学徒期间,我使用了NHibernate来处理一些我自己编写和devise的小项目。 现在,在开始一个更大的项目之前,讨论如何devise数据访问以及是否使用ORM层。 由于我仍然在学徒阶段,仍然认为自己是企业编程的初学者,所以我没有真正推动我的观点,那就是使用对象关系映射到数据库可以减轻开发的负担。 开发团队中的其他编程人员比我更有经验,所以我想我会按照他们的说法去做。 🙂 但是,我不完全理解不使用NHibernate或类似项目的两个主要原因: 可以用SQL查询构build自己的数据访问对象,并将这些查询从Microsoft SQL Server Management Studio中复制出来。 debuggingORM可能很困难。 所以,当然,我可以build立我的数据访问层与很多SELECT等,但在这里我错过了自动连接,延迟加载代理类和较低的维护工作的优势,如果一个表得到一个新的列或列被重新命名。 (更新大量的SELECT , INSERT和UPDATE查询与更新映射configuration并可能重构业务类和DTO。) 另外,如果你不熟悉这个框架,使用NHibernate你可能会遇到无法预料的问题。 例如,可以信任Table.hbm.xml,在其中设置string的长度以自动validation。 不过,我也可以想象在基于“简单”SqlConnection查询的数据访问层中的类似错误。 最后,上面提到的那些论点是否真的有一个很好的理由,不要将一个ORM用于一个非平凡的基于数据库的企业应用程序? 他们/我可能错过了其他的争论吗? (我应该补充一点,我认为这就像是第一个需要团队合作的“大”的基于.NET / C#的应用程序。堆栈溢出(Stack Overflow)中很正常的良好实践,如unit testing或持续集成 – 到现在为止。)
我想知道如果有人能够很好地解决我在过去几年中遇到过的很多问题。 我有一个购物车,我的客户明确要求它的顺序是重要的。 所以我需要坚持到DB的订单。 显而易见的方法是简单地插入一些OrderField,我将数字0赋值给N,然后按这种方式sorting。 但是这样做会使重新sorting变得困难,我觉得这个解决scheme有点脆弱,有一天会回来。 (我用NHibernate和SQL Server 2005使用C#3,5) 谢谢
我是NHibernate和C#的新手,所以请温柔! 我有以下两个NHibernate实体: Employee { private long _id; private String _name; private String _empNumber; private IList<Address> _addresses; //Properties… } 和 Address { private long _id; private String _addrLine1; private String _addrLine2; private String _city; private String _country; private String _postalCode; //Properties } 并且它们具有从Employee到Address one-to-many关系(每个员工在其logging中可以有多个地址) 。 方便地忽略一个以上员工可以居住在同一个地址的事实。 我从内存中的对象(NHibernate实体)的angular度理解这一点。 我正在努力的是映射文件(我在这里是一个简单的例子)。 这是我到目前为止所提出的: // Intentionally left out XML and <hibernate-mapping> […]