我们系统中的典型存储过程接受大约20个左右的参数。也没有机会重构这些存储过程。我基本上已经编写了自己的代码生成器,将这些SP包装到(数据库提供程序不可知)“Command”对象中,其公共属性对应于SP参数。它有效,但我更喜欢第三方经过试验和测试的解决方案。
有人可以推荐什么吗?我还没有找到支持OleDB和存储过程的文件。
编辑:我需要OleDb连接,因为SQL 6.5(信不信由你)。 ADO.NET无法连接到SQL 6.5。此外,这是一个.NET 2.0应用程序,所以LinqToSql对我没用。
Edit2:我已经尝试过nHibernate和iBatis。它们都不符合我的需要。我最后一次尝试nHibernate时,它要求SP返回一个结果集。我的SP不是这种情况。它们都需要我手动指定参数。
答案 0 :(得分:5)
我有3个ORM层的经验:
这三个都是免费的,支持OleDb连接和存储过程。
Subsonic - 这是专门为Web应用程序构建的。它模仿了Ruby On Rails的很多功能。他们刚刚添加了迁移。亚音速是三者中最轻的。对于Winforms来说,使用起来有点困难,但并不像我想的那么难。它附带了一个很好的UI工具来生成代码和维护数据库设置。这是唯一支持不同数据库的人。我已经将它与SQLite,SQL Server CE和SQL Server一起使用。
CSLA.NET - 这个几乎可以处理所有新的和灵动的.NET技术。我知道作者刚刚添加了对WCF,WPF和Silverlight的支持。当我需要使用企业级应用程序进行非常繁重的工作时,这就是我所使用的。它具有很多很好的功能,例如无限制的对象撤销,将集合标记为只读的能力,以及在任何你想要的地方移动和锚定对象的能力。这是最接近JBoss在Java上做的事情。
净层 - 我不是一个大粉丝,但它会完成工作。它比CSLA轻,但仍然比亚音速更重。我还要提到NHibernate,Castle Active Record和Microsoft Enterprise Library。我对这些没有多少经验。
答案 1 :(得分:0)
据我所知,ADO .NET Entitry框架对存储过程提供了支持...... LINQ2SQL你可以让它工作但可能需要一些代理类...... NHibernate和IBatis是你最好的选择......
答案 2 :(得分:-1)
备选方案: