Questions tagged «nhibernate»

4
NHibernate用户程序员最常犯的错误和反模式是什么?
NHibernate用户程序员最常犯的错误和反模式是什么?请解释为什么这些是不良做法,或提供指向资源的链接以供进一步阅读。 例如: 对于新的NHibernate程序员而言,一种常见的反模式是使用身份/本机POID代替ORM样式。在这里阅读更多...
28 nhibernate 

7
编写自己的数据访问/数据映射层是“好”主意吗?
当前,我们处于选择使用现成的对象关系映射器或滚动自己的关系的情况下 我们有一个遗留应用程序(ASP.NET + SQL Server),其中数据层和业务层不幸地混在一起。该系统在数据访问方面并不是特别复杂。它从一大组(35-40)相互关联的表中读取数据,在内存中进行处理,然后以摘要格式将其保存回其他表中。现在,我们有机会进行一些重构,并且正在寻找可用于分离和正确构建数据访问的候选技术。 无论我们决定采用哪种技术,我们都希望: 在我们的域模型中具有持久性忽略的POCO对象 有一个抽象层,使我们可以根据模拟的基础数据源对域模型对象进行单元测试 显然,在模式和框架等方面已经有很多东西。 我个人正在推动将EF与ADO.NET单元可测试存储库生成器/ POCO实体生成器结合使用。它满足了我们的所有要求,可以轻松地捆绑在Repo / UnitOfWork模式中,并且我们的数据库结构相当成熟(已经进行了重构),因此我们不会每天对模型进行更改。 但是,小组中的其他人则建议完全从头开始设计/发布我们自己的DAL。(自定义DataMappers,DataContext,存储库,无处不在的接口,过分依赖以创建具体对象,自定义LINQ到底层查询翻译,自定义缓存实现,自定义FetchPlan实现...),该列表不胜枚举,直言不讳我是疯子。 引发的一些争论是“至少我们将控制自己的代码”或“哦,我在先前的项目中使用过L2S / EF,这无非是头疼”。(尽管我以前在生产中都使用过,发现任何问题很少而且相差不大,而且很容易处理) 因此,您在超级经验丰富的开发人员/架构师中是否有任何智慧的言语可能会帮助我将这个产品从我看来将是一场彻底的灾难中解脱出来。我忍不住想,通过规避EF问题而获得的任何利益,都将因尝试重新发明轮子而同样迅速地丧失。

2
为什么NHibernate需要存储库模式?
我正在阅读您的第一个基于NHibernate的正式应用程序。 尽管本教程很好且易于遵循,但我想知道为什么使用存储库模式。 在不同的Add,Update,Remove在方法ProductRepository的实现,代码是几乎相同的-他们使用的所有交易,不同的是在“肉”,即调用session.SaveINT的Add方法,session.Delete在remove方法。(页面缺少HTML锚,但你可以搜索页面像相关的代码public void Remove,public void Add) 该代码只是“感到错误”。 作者为什么使用Repository模式-仅仅是为了演示使用NHibernate还是出于某些原因? 附言 我的背景是使用ActiveRecord的Ruby on Rails,所以我试图弄清NHibernate的工作方式/使用方式。
13 c#  .net  nhibernate 

5
如果“存储库模式”对于现代ORM(EF,nHibernate)过大,那么更好的抽象是什么?
我最近阅读了很多关于将存储库模式与功能强大的ORM(例如Entity Framework)一起使用的争论,因为它结合了类似存储库的功能以及工作单元功能。 另一个反对在单元测试之类的情况下使用该模式的论点是,存储库模式是一种泄漏抽象,因为更通用的实现利用了IQueryable。 反对使用存储库模式的论点对我来说很有意义,但是建议的替代抽象方法通常更令人困惑,并且看起来像问题一样矫kill过正。 吉米·鲍嘉(Jimmy Bogards)的解决方案似乎既要吹散抽象,又要介绍自己的体系结构。 https://lostechies.com/jimmybogard/2012/10/08/favor-query-objects-over-repositories/ 另一个不必要的存储库示例....但是使用我的体系结构! http://blog.gauffin.org/2012/10/22/griffin-decoupled-the-queries/ 另一个... http://www.thereformedprogrammer.net/is-the-repository-pattern-useful-with-entity-framework 我还没有找到一种明显的替代或替代方法,而该替代方法本身并不具有更多的体系结构,因此可以替代“过于复杂”的存储库模式。

3
带有ORM的DDD业务逻辑应该去哪里?
我过去使用过MDA(模型驱动的体系结构)工具,我们通过UML进行建模,这会生成业务实体(我们的域模型)和ORM(映射等)。 该域上的许多业务代码和服务都是该模型的一部分,并且我们的存储库正在返回业务实体(因此,不可能切换到另一个ORM(不是我们想要的))。 但是,现在我正在开始一个项目,我想从DDD角度进行思考。 到目前为止,感觉好像我将业务逻辑放入域模型中,并通过存储库与ORM(无论选择哪种)一起使用。但是,如果我想继续在应用程序的ORM部分中使用MDA工具,则此处创建的模型将非常贫乏(即不包含任何业务逻辑)。同样,如果我将实体框架(.net)或NHibernate用于我的ORM,它也将是贫血模型。我不确定如果我刚刚使用NHibernate,您会将业务逻辑放在哪里。 我是否以这种方式正确思考,换句话说,使用DDD使用域中的所有业务逻辑,而仅使用ORM通过存储库进行持久化?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.