支持 OleDb 和存储过程的良好 .NET ORM 框架?
Posted
技术标签:
【中文标题】支持 OleDb 和存储过程的良好 .NET ORM 框架?【英文标题】:Good .NET ORM Framework that supports OleDb and Stored Procedures? 【发布时间】:2008-09-22 23:40:15 【问题描述】:我们系统中的典型存储过程接受大约 20 个左右的参数。也没有机会重构这些存储过程。我基本上求助于编写自己的代码生成器,将这些 SP 包装到(与数据库提供程序无关的)“命令”对象中,它们的公共属性对应于 SP 参数。它有效,但我更喜欢第 3 方久经考验的解决方案。
任何人都可以推荐任何东西吗?我还没有找到支持 OleDB 和存储过程的。
编辑:由于 SQL 6.5,我需要 OleDb 连接(信不信由你)。 ADO.NET 无法连接到 SQL 6.5。另外,这是一个 .NET 2.0 应用程序,所以 LinqToSql 对我没用。
Edit2:我已经尝试过 nHibernate 和 iBatis。它们都不适合我的需要。上次我尝试 nHibernate 时,它要求 SP 返回一个结果集。我的SP不是这种情况。两者都需要我手动指定参数。
【问题讨论】:
你选择了哪个框架?只是好奇。 【参考方案1】:我有 3 个 ORM 层的经验:
Subsonic CSLA.NET .NET Tiers这三个都是免费的,支持 OleDb 连接和存储过程。
Subsonic - 这是专为 Web 应用程序构建的。它模仿了 Ruby On Rails 所做的很多事情。他们只是添加了迁移。亚音速是三者中最轻的。使用 Winforms 有点困难,但没有我想象的那么难。它带有一个很好的 UI 工具来生成代码和维护数据库设置。这是唯一支持不同数据库的。我已经将它与 SQLite、SQL Server CE 和 SQL Server 一起使用。
CSLA.NET - 这个几乎可以处理几乎所有新的和闪亮的 .NET 技术。我知道作者刚刚添加了对 WCF、WPF 和 Silverlight 的支持。当我需要非常繁重的企业类型应用程序时,这就是我使用的。它有很多不错的功能,例如无限制的对象撤消、将集合标记为只读的能力,以及在任何你想要的地方移动和锚定对象的能力。这是最接近 JBoss 在 Java 上所做的事情。
Net Tiers - 我不是一个大粉丝,但它会完成工作。它比 CSLA 轻,但仍比 Subsonic 重。
我还要提到NHibernate、Castle Active Record 和Microsoft Enterprise Library。不过我对这些没有太多经验。
【讨论】:
你确定 Subsonic 支持 OleDB 吗? 您的答案今天仍然有效吗?已经4.5年了。我今天刚刚谈到这个问题,这意味着问题仍然存在。我认为实体框架变得更加相关,所以我想知道你现在会推荐什么。 我已经成功地将 ServiceStack.OrmLite 与 SQL Server 和 SQLite OleDb 提供程序一起使用。我听说 Dapper 也适用于 OleDb 提供程序。我相信 EF 5.0 现在支持 OleDb。查看这些链接:***.com/questions/16125434/…***.com/questions/12322023/…【参考方案2】:据我所知,ADO .NET Entitry 框架对存储过程的支持很少……LINQ2SQL 你可以让它工作,但可能需要某种代理类……NHibernate 和 IBatis 是你最好的选择……
【讨论】:
【参考方案3】:替代方案:
-
LINQ to SQL
ADO.NET 实体框架
NHibernate
您的选择)
【讨论】:
以上是关于支持 OleDb 和存储过程的良好 .NET ORM 框架?的主要内容,如果未能解决你的问题,请参考以下文章