随笔分类 - 框架学习----NHibernate
摘要:FluentNHibernate缺省带一个Castle的DLL,如果项目中同时用 FluentNHibernate 跟Castle ,可能会出现版本不一致的情况,具体错误:未能加载文件或程序集“Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)如果出现这种情况,可以把Castle的版本改成跟FluentNHibernate一致,但是这样就不能使用最新的Castle,所以我的做法
阅读全文
摘要:public class AddDaysGenerator : BaseHqlGeneratorForMethod { public AddDaysGenerator() { SupportedMethods = new[] {ReflectionHelper.GetMethodDefinition<Date>(d => d.AddDays(0))}; } #region Overrides of BaseHqlGeneratorForMethod public override HqlTreeNode BuildHql(MethodInfo method, Expressi
阅读全文
摘要:ORM大家都非常熟悉了吧,我相信也有很多朋友正在用自己或者一些公开的框架,而最常用而且强大的,非Hibernate了(Net中为NHibernate),网上的文档非常多,不过在博客园中,介绍NHibernate的非常少,李哥的NHibernate系列(NHibernate之旅)不失为一个经典,对于新手的我们,需要完全掌握还需要很长一段路,对于新手来说,最初的配置是非常头大的一件事情,好在老赵推荐一个开源的框架Fluent NHibernate,有了它,我们可以完全脱离配置文件,不过博客园中介绍Fluent NHibernate的文章非常少,而且官方文档也还没有完全,所以对于我来说也就一点一点摸
阅读全文
摘要:Ninject中提供多种接口和实现类的绑定的方式供我们选择,同时还可以设置相关的绑定项以及对象的作用域等。具体如下:(其中使用到的类和代码重用上一节的“Ninject 2.x细说---1.基本使用”中的定义)1. 绑定:Ninject中提供好几种绑定接口实现的方法,具体如下:ØTo:绑定到接口的具体实现。ØToConstant:绑定到某个常量值。ØToMethod:绑定到方法。ØToProvider:绑定到某个自定义的对象创建提供程序。ØToSelf:自绑定。代码如下:1) 自绑定Ninject可以使用ToSelf()方法,将自己绑定自己,这里
阅读全文
摘要:本来想使用一下Ninject的,然后搜索了很久,都没找到比较详细的关于Ninject的使用方法等内容.于是乎干脆自己来写几篇介绍Ninject的内容.1. 依赖注入和IOC依赖注入和IOC的概念,可以点击这里看之前的文章.在这里就不多介绍了.2. 环境准备Ø开发环境:WIN7 + VS2010 SP1 ØNinject:本节内容以Ninject2.2.0.0-release-net-4.0为基础进行介绍。可以点击这里打开Ninject的官网进行下载。需要说明的是,CodePlex上虽然也有Ninject项目,但其基本没怎么更新。所以就不要从那里下载了。直接到Ninject其
阅读全文
摘要:Fluent NHibernate provides an API for completely configuring NHibernate for use with your application, all within code. The API is broken down into five main methods, three of which are required.Fluently.Configure() .Database(/* your database settings */) .Mappings(/* your mappings */) .ExposeCon...
阅读全文
摘要:Fluent NHibernate offers an alternative to NHibernate's standard XML mapping files. Rather than writing XML documents (.hbm.xml files), Fluent NHibernate lets you write mappings in strongly typed C# code. This allows for easy refactoring, improved readability and more concise code. Fluent NHiber
阅读全文
摘要:NHibernate之旅系列文章导航宣传语NHibernate、NHibernate教程、NHibernate入门、NHibernate下载、NHibernate教程中文版、NHibernate实例、NHibernate2.0、NHibernate2.0教程、NHibernate之旅、NHibernate工具导游NHibernate是把Java的Hibernate核心部分移植到Microsoft .NET Framework上。它是一个对象关系映射工具,其目标是把.NET对象持久化到关系数据库。 NHibernate在2008年8月31日发布了NHibernate2.0版本,代表NHibern
阅读全文
摘要:如果使用NHibernate自带的集合类型,其中一个问题就在于需要在代码中手动维护双向关系,迫使开发人员编写额外的代码。其实这就是集合自定义逻辑的一个应用方面。现在,既然我们已经得到了一个方便的自定义集合的解决方案,那么现在便把“自动维护双向关系”作为目标来实现一番,也算是一个非常典型的示例了。昨天是休息天,看文章的朋友比较少,如果您遗漏了上一篇的内容,不妨再阅读一次,对理解本文会有一定帮助。我们已经知道LINQ to SQL是如何自动维护双向关系的,它的做法是在集合被添加或删除元素时发起一个回调函数,而在回调函数内部对某些属性进行设置。我们也可以采用这种方式。不过在此之前,我们必须知道NHi
阅读全文
摘要:NHibernate自定义集合类型(中):通用实现方式2009-10-11 11:27 by Jeffrey Zhao, 15542 visits, 收藏, 编辑 上一片文章中我们观察了在代码中自定义一个基于Set的集合类型该怎么做,以及简单了解了一下NHibernate的这些自定义支持大致是如何工作的。不过文章最后还是留了两个问题,一是认为这种扩展方式不够通用,二是其中会出现的“重复”或是“反向依赖”。现在我们就需要在上文的基础上进行总结,提出一个通用的实现,可以方便我们构建自定义的集合类型。既然要通用,我们要做的第一件事情就是对之前的例子进行总结。在Question - Answer的例.
阅读全文
摘要:前天一篇文章中我说NHibernate的集合类型实现有些“尴尬”,它无法使用自定义集合类型,设计也有些古怪——不过在许多朋友的指点下,我意识到NHibernate是可以使用自定义集合类型的。至于它的设计是否合理(或者说是用是否方便?)……这就是这几篇文章中想要探讨的内容了。不少朋友给出了一些自定义集合类型的示例链接,我参考之余也自己找了一些资料,慢慢尝试,也终于有了一些体会。这个小系列预计有上中下三篇,在这第一篇里主要是阐述在NHibernate中自定义集合类型的基本原理和方式,进而引发一些问题。第二篇主要便是解决问题,并为了简化开发提供一个思路和“通用”一些的实现。至于第三篇,便是一个“示例
阅读全文
摘要:之前谈了NHibernate的几个方面,似乎抱怨的居多,不过这次我想谈一下我对Interceptor的感受,则基本上都是好话了。这并不一定是说Interceptor设计的又多么好(事实上它使用起来还是挺麻烦的),但是这的确也是我认为NHibernate超越LINQ to SQL,尤其是Entity Framework的又一个重要方面——因为Entity Framework本身也已经不差了。更重要的是,Interceptor机制让我得以实现我“理想中的”数据访问功能。当然现在只是浅尝辄止一番,我打算以后再慢慢地,详细地谈谈我所满意的“数据访问层”设计。Interceptor的作用是为NHIber
阅读全文
摘要:长假休息了好多,那么继续谈谈我对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...
阅读全文
摘要:我对NHibernate的感受(2):何必到处都virtual2009-09-24 15:09 by Jeffrey Zhao, 13533 visits, 收藏, 编辑 上一篇文章主要是在夸NHibernate实现的好,而这篇就完全是来抱怨的了。NHiberante有个毛病,就是如果是和数据库产生映射的类,就要求所有的public成员和protected成员必须是virtual的。请注意这里的要求有两个细节:即使是方法,也必须标记为virtual即时是不和数据库有映射关系的属性,也必须标记为virtual这就让我觉得无厘头了,为什么没有任何关系的东西也要受到限制?我知道NHiberante.
阅读全文
摘要:我对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那样容.
阅读全文
摘要:系列引入 NHibernate3.0剖析系列分别从Configuration篇、Mapping篇、Query篇、Session策略篇、应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种应用程序的集成,基于NHibernte3.0版本。如果你还不熟悉NHibernate,可以快速阅读NHibernate之旅系列文章导航系列入门,如果你已经在用NHibernate了,那么请跟上NHibernate3.0剖析系列吧。NHibernate专题:http://kb.cnblogs.com/zt/nhibernate/NHibernate官方站点:http://nhforge.org/..
阅读全文
摘要:系列引入 NHibernate3.0剖析系列分别从Configuration篇、Mapping篇、Query篇、Session策略篇、应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种应用程序的集成,基于NHibernte3.0版本。如果你还不熟悉NHibernate,可以快速阅读NHibernate之旅系列文章导航系列入门,如果你已经在用NHibernate了,那么请跟上NHibernate3.0剖析系列吧。NHibernate专题:http://kb.cnblogs.com/zt/nhibernate/NHibernate官方站点:http://nhforge.org/..
阅读全文
摘要:With the release of the new version NHibernate (3.0 alpha1), I’ve decided to give it a try and branch my current solution to switch to this new version and see hoe it goes.I was especially interested in the new Linq support, cause I’ve decided to use it as the basis for my data access strategies.Aft
阅读全文
摘要:在使用NHibernate过程中经常会使用到复杂的sql查询,但是使用hql又比较麻烦的情况下,我们往往都会想到采用原始的sql来执行。但是如何利用NHibernate来执行sql呢?问题来了,在NHibernate中也有AdoTemplate的方法可以执行sql的,但是这里要介绍的是另外一种方法:CreateSQLQuery。以下部分例子源自于网络。实例一(源自于http://blog.csdn.net/canduecho/archive/2009/05/04/4149930.aspx,感谢博主分享):Nhibernate中CreateSQLQuery用法实例:涉及的表:[c-sharp:s
阅读全文
摘要:http://student.csdn.net/space.php?uid=117956&do=blog&id=257891: QBE (Query By Example) Criteria cri = session.createCriteria(Student.class); cri.add(Example.create(s)); //s是一个 Student 对象 list cri.list(); 实质:创建一个模版,比如我有一个表serial 有一个 giftortoy 字段,我设置 serial.setgifttoy(\"2\"), 则这个表中的所
阅读全文

浙公网安备 33010602011771号