摘要:
如果使用NHibernate自带的集合类型,其中一个问题就在于需要在代码中手动维护双向关系,迫使开发人员编写额外的代码。其实这就是集合自定义逻辑的一个应用方面。现在,既然我们已经得到了一个方便的自定义集合的解决方案,那么现在便把“自动维护双向关系”作为目标来实现一番,也算是一个非常典型的示例了。昨天是休息天,看文章的朋友比较少,如果您遗漏了上一篇的内容,不妨再阅读一次,对理解本文会有一定帮助。我们已经知道LINQ to SQL是如何自动维护双向关系的,它的做法是在集合被添加或删除元素时发起一个回调函数,而在回调函数内部对某些属性进行设置。我们也可以采用这种方式。不过在此之前,我们必须知道NHi 阅读全文
posted @ 2012-03-31 16:02
awp110
阅读(197)
评论(0)
推荐(0)
摘要:
NHibernate自定义集合类型(中):通用实现方式2009-10-11 11:27 by Jeffrey Zhao, 15542 visits, 收藏, 编辑 上一片文章中我们观察了在代码中自定义一个基于Set的集合类型该怎么做,以及简单了解了一下NHibernate的这些自定义支持大致是如何工作的。不过文章最后还是留了两个问题,一是认为这种扩展方式不够通用,二是其中会出现的“重复”或是“反向依赖”。现在我们就需要在上文的基础上进行总结,提出一个通用的实现,可以方便我们构建自定义的集合类型。既然要通用,我们要做的第一件事情就是对之前的例子进行总结。在Question - Answer的例. 阅读全文
posted @ 2012-03-31 16:00
awp110
阅读(178)
评论(0)
推荐(0)
摘要:
前天一篇文章中我说NHibernate的集合类型实现有些“尴尬”,它无法使用自定义集合类型,设计也有些古怪——不过在许多朋友的指点下,我意识到NHibernate是可以使用自定义集合类型的。至于它的设计是否合理(或者说是用是否方便?)……这就是这几篇文章中想要探讨的内容了。不少朋友给出了一些自定义集合类型的示例链接,我参考之余也自己找了一些资料,慢慢尝试,也终于有了一些体会。这个小系列预计有上中下三篇,在这第一篇里主要是阐述在NHibernate中自定义集合类型的基本原理和方式,进而引发一些问题。第二篇主要便是解决问题,并为了简化开发提供一个思路和“通用”一些的实现。至于第三篇,便是一个“示例 阅读全文
posted @ 2012-03-31 15:57
awp110
阅读(234)
评论(0)
推荐(0)
摘要:
之前谈了NHibernate的几个方面,似乎抱怨的居多,不过这次我想谈一下我对Interceptor的感受,则基本上都是好话了。这并不一定是说Interceptor设计的又多么好(事实上它使用起来还是挺麻烦的),但是这的确也是我认为NHibernate超越LINQ to SQL,尤其是Entity Framework的又一个重要方面——因为Entity Framework本身也已经不差了。更重要的是,Interceptor机制让我得以实现我“理想中的”数据访问功能。当然现在只是浅尝辄止一番,我打算以后再慢慢地,详细地谈谈我所满意的“数据访问层”设计。Interceptor的作用是为NHIber 阅读全文
posted @ 2012-03-31 15:48
awp110
阅读(225)
评论(0)
推荐(0)
摘要:
长假休息了好多,那么继续谈谈我对NHibernate的感受。既然是一个ORM框架,那么自然是将O这一端映射R上。至于集合,是O这方面最常见,也是R这一边非常容易表示的关系。例如,一个问题(Question)可以包含多个回答(Answer),于是我的代码里就有这样的结构:public class Question{ public virtual int QuestionID { get; set; } public virtual string Name { get; set; } private ISet<Answer> m_answers; public ISet<A... 阅读全文
posted @ 2012-03-31 15:47
awp110
阅读(169)
评论(0)
推荐(0)
摘要:
我对NHibernate的感受(2):何必到处都virtual2009-09-24 15:09 by Jeffrey Zhao, 13533 visits, 收藏, 编辑 上一篇文章主要是在夸NHibernate实现的好,而这篇就完全是来抱怨的了。NHiberante有个毛病,就是如果是和数据库产生映射的类,就要求所有的public成员和protected成员必须是virtual的。请注意这里的要求有两个细节:即使是方法,也必须标记为virtual即时是不和数据库有映射关系的属性,也必须标记为virtual这就让我觉得无厘头了,为什么没有任何关系的东西也要受到限制?我知道NHiberante. 阅读全文
posted @ 2012-03-31 15:43
awp110
阅读(163)
评论(0)
推荐(0)
摘要:
我对NHibernate的感受(1):对延迟加载方式的误解2009-09-24 14:04 by Jeffrey Zhao, 14390 visits, 收藏, 编辑 NHibernate是.NET平台上最著名的ORM框架,虽说出身于Java平台上的Hibernate,但是从外部看来这几乎就是一个.NET平台上的原生产品:有自己的社区,有自己的用户,有自己的商业支持,有利用C#特性的独立扩展。它不像Lucene.NET那样,一眼就能看出浓重的Java气息,Java的命名方式等等。我用NHibernate时间不长,而NHibernate的复杂程度也决定了我无法像了解LINQ to SQL那样容. 阅读全文
posted @ 2012-03-31 15:39
awp110
阅读(186)
评论(0)
推荐(0)

浙公网安备 33010602011771号