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