我喜欢使用SQL,我觉得我很好。
我尝试使用Linq(使用c#和Linq2Sql,看起来感觉与VB.Net更像SQL),我觉得非常令人沮丧, 您无法在不编译和执行代码的情况下运行查询。我对IQueryable,IEnumarable,IList等不太满意。我怀疑为什么在你是专业SQL用户时会使用Linq。
但是我需要某种O / RM,所以我可以编写我的测试代码,我喜欢使用POCO而不是数据集。
因此,考虑到我的团队中的每个人都是某种程度的SQL专家(主要是MS SQL,因此也是T-SQL),并享受数据库编程,您建议使用O / RM。 (商业或OpenSource并不重要,良好的支持,教程和文档是必须的)
我们的开发环境将是C#,ASP.Net MVC以及ExtJS。
我们要迁移的应用程序上有1000多个表。您不会相信ADO.Net Entity Framework会在其上生成多少代码。我也尝试了一下Castle ActiveRecord,(我对H(N)Hibernate一无所知,并且没有足够的ActiveRecord文档让我继续前进)
答案 0 :(得分:5)
不是真正的答案,但在将LINQ作为查询语言解除之前尝试LINQPad一周^^
规则很简单:
- 在“开始”菜单上找到SQL Management Studio的快捷方式 把它移到其他地方。
- 取而代之的是插入LINQPad的快捷方式。
- 下周,仅使用LINQPad执行所有临时SQL查询。
答案 1 :(得分:3)
最好的ORM支持Linq,因此无论如何都不会成为问题。 LinqPad肯定会帮助你提升学习曲线。 Linq具有显着的优势,所以你真的应该试着离开你的T-SQL舒适区并接受它。
有1000个表,我肯定会远离LinqToSql和EntityFramework,它们只是无法有效扩展。如果可能的话,你也会想要一些代码生成良好的东西。
NHibernate有代码生成选项,但它们通常要么缺乏,要么从我看到的商业广告。可能有一些很棒的免费产品,我还没有找到它。我不知道Castle ActiveRecord是否正是您想要的,但它绝对是一种入门方式,您可以随时转换到NHibernate之上的其他模式。
我不知道SubSonic有足够的功能来支持在1000个表数据库上编写的大型应用程序,但它可能非常合适。
LLBLGen Pro是一种我认为最符合您需求的商业产品。
关于选择.NET ORM,还有很多关于SO和其他地方的讨论:
答案 2 :(得分:1)
但我需要某种O / RM,所以我可以编写测试代码,我喜欢使用POCO而不是数据集。
然后我强烈建议SubSonic [好像否则我不会:)。
答案 3 :(得分:0)
看一下iBatis,我的理解是它围绕SQL的层比大多数OR / M解决方案要薄得多。
答案 4 :(得分:0)
以下是工具列表:OR Mapping
答案 5 :(得分:0)
在我的Java时代,我使用了Hibernate,而且几年前转向C#,我一直在使用nHibernate。与iBatis一样,它是来自Java ORM的端口,因此可以从双方开发的功能中获益。文档也很好。你甚至可以找到一些书。