我应该使用哪个ORM而不是Linq到Sql?

Ven*_*emo 5 .net c# orm

我正在将CMS作为我的业余爱好项目.因为我没有得到报酬,时间不是很重要,我渴望建立一个设计良好的系统.

我有一组业务类负责主逻辑,他们通过接口从数据库获取数据,数据提供者(可以实现接口)可以从配置中设置.

目前我使用LINQ to SQL作为我的数据访问层,但是我对这个主题的阅读越多,我就越相信我应该使用更高级的ORM,因为LINQ to SQL不支持一些非常有用的东西.有利于应用程序的整体性能.例如,缓存和持久性.(我读过NHibernate,例如,只在必要时才咨询数据库,否则它只是从缓存中获取数据. - 这很好,因为平均而言,网站几天都没有获得新内容,所以代替通过在每个请求上从数据库中读取来浪费性能,从缓存中提供服务就好了.)

我正在考虑一些选项,并想知道我该怎么办.

  1. 为我的业务类编写自己的持久性逻辑,并继续使用LINQ to SQL.
  2. 直接使用NHibernate,或通过Castle ActiveRecord或Fluent NHibernate
  3. 使用其他一些ORM

我最喜欢的选择是第二个,因为NHibernate比我需要的更强大,而ActiveRecord似乎隐藏了大部分的复杂性.(顺便说一句,我也打算使用Castle Windsor.)

唯一的问题是,我找不到有关这些工具性能的任何信息.我花了几个小时谷歌搜索(和binging(我也在这个网站上看),发现了不少文章和博客文章,但没有一个人谈到性能.

这会比当前的解决方案更好,还是应该使用完全不同的任务?

提前致谢!

Wim*_*dse 7

Linq to SQL很不错(如果除了SQL Server之外你不会使用任何东西).不要打扰Linq to Entities(EF).它已经破碎(远非成熟) - 在很多层面上.

我自己去NHibernate - 很棒的实体映射和多个数据库平台支持.还有一个非常久经考验的ORM.

  • 带有.NET 4的EF v4(2010年3月发布)将纠正EF1的许多缺点 - 绝对值得一看 (2认同)
  • 如果你挂在映射文件上,流畅的NHibernate很不错.当我学习nhibernate时,我没有为xml架构输入XSD文件.在我开始使用XSD文件后,我真的没有太多的XML问题.话虽如此.流利的NHibernate非常甜蜜,你应该看看它.也有人说,Fluent NHibernate是另一个需要学习的东西.如果你最终遇到nhibernate的法线贴图问题,那么请使用流利的. (2认同)