摘要: 前言公司最近的项目决定使用EF。作为EF的完全新手,写一些学习中的经历和解决的办法,希望老鸟们能不吝赐教。sample程序使用EF 4.1RC+Spring.Net 1.3.1+ASP.NET MVC3。在CodePlex开源http://efsample.codeplex.com/由于使用了其他的开源框架,还是声明一下license为Apache 2.0。实际上只要不违反各个框架的license,本系列代码请随意使用。需求先谈一谈项目对ORM的需求基本需求 增删改 查 一对多 多对多 可以映射到现有数据库上(有一些命名方面的问题) 可以让任意类映射到数据库上(项目允许客户二次开发。最简单的情 阅读全文
posted @ 2011-04-05 19:09 jiaxingseng 阅读(9731) 评论(14) 推荐(8) 编辑
摘要: 去年开始博客园和Jdon有一场DDD的讨论,是关于如何给一个图书馆的应用系统建模。大概是在讨论几个经典的Use Case:办卡、持卡借书和还书。 讨论最开始由博客园的张逸大牛发起(链接在此),给出了一个比较完整的建模。一方面从功能上实现了不少逾期罚款之类的功能,另一方面这个建模也涉及到了很多DDD的要点,比如聚合的划分什么的。 然后Jdon有两篇文章给出了回应(一、二),下面讨论的质量也比较高。针对于这个系统的建模来说,前者给出了一个思路是以借书卡为中心,借书行为由Card对象负责,然后还有一个观点是借书条目这个东西应该是个什么,什么时候被删除,用四色原型来看,大概就是在界定这个MI的范围。后 阅读全文
posted @ 2011-03-25 13:36 jiaxingseng 阅读(3688) 评论(17) 推荐(1) 编辑
摘要: 上次贴出来的那个ORMBattle,我也说过了,喷的人很多。其中相当一部分是NH的爱好者或者开发者,主要内容就是性能测试中NH没有做优化,双方互发了好多博文,到最后Fabio Maulo已经开始说一些不好听的了,而且还“抱歉这篇我不用英语了”然后就开始用西班牙语喷= =(感谢google translator。。。) 当年(09年)几乎同一时期,又有一哥们进行了EF vs NH的性能测试。结果类似,NH惨败。NH大牛们于是又站出来喷,哥们赶紧又发了一篇,包含了大牛们给出的优化方案。其实从图上来看,NH还是败了的,但是哥们还是很违心的(大雾)出来搅混水说“性能差不多”,“性能并不是我们的唯一追求 阅读全文
posted @ 2011-03-22 16:35 jiaxingseng 阅读(3078) 评论(20) 推荐(3) 编辑
摘要: 公司下一个项目要在EF和NH之间做一个抉择。网上关于二者优劣的文章一搜一大把。本文仅提供ORMBattle测试套件下二者最新版本的比较。 首先给出我修改过的测试套件,包含结果。 修改点如下 删掉了DataObject.Net相关的测试,因为我没有license 升级NH到最新的NH3,测试用的Context类不继承任何基类直接使用Session.Query(而基于NH2.1.2的测试套件里继承了NHibernate.Linq 2.1.2的NHibernateContext) 把根目录下的Output.txt替换为了我的测试结果,只包含了EF和NH _Documents\ORMBattle.NE 阅读全文
posted @ 2011-03-18 17:11 jiaxingseng 阅读(4329) 评论(12) 推荐(1) 编辑
摘要: 最近公司分配了项任务,让我调查一下.NET世界中的AOP。需求有四 什么是AOP?有什么用途? AOP的编程模型 .NET世界中的AOP框架介绍极其评比 最佳实践 本文将假设读者对AOP的相关原理概念有了一定的了解,直接从第三部分开始。 实现方式 From Ayende Rahien’s blog post Approach Advantages Disadvantages Remoting Proxies Easy to implement, because of the .Net framework support Somewhat heavy weight Can 阅读全文
posted @ 2011-02-11 13:52 jiaxingseng 阅读(8626) 评论(14) 推荐(10) 编辑
摘要: 需求 最近有个小的探索类需求:如何支持在数据库中动态的添加一列? 例如我们有一个type News [代码]如果客户说希望多一个属性叫ExpireAt怎么办? 方案 想了想,数据库schema方面大概有如下几种办法: Sharepoint那样的schema,把表定义和rows分离开。确实灵活性很大,但是数据可读性比较差,而且复杂度也高 给news表创建一列叫个什么ExtendedProperties之类的,专门用于存储键值对,虽然很简单但是bad design。 在维持news表不动的情况下创建sharepoint式的schema表和values表,用于存储扩展属性的schema和其值 在 阅读全文
posted @ 2011-01-19 16:08 jiaxingseng 阅读(2084) 评论(8) 推荐(1) 编辑
摘要: 微软的MSDeploy提供了web.config transform方式,提供发布时对web.config的变换能力以应对不同模式的部署。VS2010创建ASP.NET项目的时候就默认提供了debug版和release版的web.config。详细可以参考MSDN。而还有一些场景是也需要在部署的时候变更web.config内容,但是需要通过外部(例如安装程序)指定需要变换的参数。这就要用到了web... 阅读全文
posted @ 2010-11-09 09:45 jiaxingseng 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 例如我有[代码]我想让obj2的Property1直接引用obj1的Property1。根据智能感知我知道可以使用expression,但是这具体的写法就成了问题。中间自己瞎尝试走了不少弯路,尤其是看了java下的spring的写法value = #{ expression },走了不少弯路。spring.net中expression的写法参考这里刚才说的内容在11.3.14. Spring Ob... 阅读全文
posted @ 2010-11-05 16:34 jiaxingseng 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 周末在家看了看Lucene.Net。想尝试着给数据库加上全文检索的功能。早就听说Lucene的API很复杂难用,看了几篇文档之后有了打退堂鼓的念头。。。已经不单单是API的问题了,就那个检索的语法就。。。于是很自然的想到了有没有Linq to Lucene,搜索了一下,果然找到了codeplex上的一个项目。不过看起来主要是为了解决语法问题的,生成index的工作貌似还是要自己去做,至少我看这个例... 阅读全文
posted @ 2010-08-31 13:48 jiaxingseng 阅读(760) 评论(0) 推荐(0) 编辑
摘要: 我们会经常有这种需求:把一个字段映射成一个枚举。于是Nhibernate提供了这种能力,在mapping中不指定type,让NH自己推断就好。于是今天收工(喂。。。呃。。。继续说。印象中,按照上述方法,NH会往你的char或者varchar字段中存入枚举对应的int值。于是客户不爽了,他们想看到一个更有意义的字符,甚至字符串。 还好NH提供了两个类:EnumCharType和EnumStringT... 阅读全文
posted @ 2010-08-27 18:21 jiaxingseng 阅读(1863) 评论(1) 推荐(3) 编辑