我们即将开始一个新项目。它将是一组具有大量共享组件的Web应用程序。它每天将有多达50,000个独立用户访问,它将成为某种管理面板。所有项目都将在asp.net mvc 2中构建,它们都可以在一个SQL Server数据库上运行。
在找到ormbattle.net网站之前,我们一直非常注重NHibernate,与其他地图制作者相比,NHibernate的性能测试看起来很差。在这个总结中,我发现之前我不知道图书馆。 BLToolkit看起来很有希望,但有两个优点和缺点。
BLToolkit的社区支持很少,很少有例子,我也没有真正听说过在一个大项目中使用它的人。此外,它非常轻量级,这意味着它不支持许多关系,延迟加载和缓存......
另一方面,性能非常好,而且它也有很好的Linq支持。
在这种情况下,我在选择其中一种方式之间:
我不是在寻找这种情况的判决。我要求的是一个小小的讨论,指出一些我没有考虑过的问题,或者只是与我分享一些关于不仅使用BLToolkit而且还使用其他或mappers的经验。
答案 0 :(得分:4)
BLToolkit在俄语forum上有很棒的社区,你很容易用英语提问,因为这个社区的大多数成员都懂英语。
答案 1 :(得分:3)
您是否可以使用您正在考虑的几种不同的ORM创建原型,并查看它们是否能够满足您的需求?您可以编写一些一次性的“性能峰值”代码,并使用Visual Studio中的data generator使用示例数据填充表格。
我认为选择基于相信替代品不能很好运行的ORM是不成熟的优化 - 除非你做过测试以确认你的怀疑。
关于ormbattle.net,这里是Ayende's prespective - 他是NHibernate开发人员之一。这是暂时的,我不知道ormbattle.net从那时起是否发生了变化。
不再积极开发LINQ to SQL - 因此如果您想使用Microsoft的ORM,EF将是最佳选择。
我个人更喜欢NHibernate到EF,但是当前版本的EF确实比当前版本的NHibernate具有更完整的LINQ实现。 NHibernate 3(今年晚些时候出版)将提供完整的LINQ支持,以及另一个名为QueryOver的类型安全API。
答案 2 :(得分:2)
ormbattle.net网站可能非常缺乏领先优势,因为不同的ORM旨在以不同的方式使用,因此简单的基准测试不会告诉您匹配。
您有两个基本选项。
例如,如果选择Nhibernate,您会发现Nhibernate专家将使用给定样式的数据库模式(和对象)。复制它们,你将获得最少的痛苦。
问题在于,没有ORM能够很好地应对所有类型的数据库模式,除非您之前已经编写过其他类似的系统,否则在开发系统之前您不太可能知道所有数据存储需求。
请记住,如果您发现某些更新的ORM速度很慢,您可以随时绕过ORM并使用手写SQL。
答案 3 :(得分:2)
一个非常开放的问题 - 在一天结束时,我们列出了我们的要求/期望并从那里开始。一些选择标准包括:
一些链接 Best ORM to use with C# 4.0
Ayende比较EF4和NH2.5 + http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx
祝你好运