什么是适合我们需求的轻量级ORM?

时间:2010-07-06 16:41:00

标签: .net asp.net sql-server orm

好的,我知道“我应该使用什么X”是非常广泛的,所以让我缩小我们的使用场景。基本上,我们很久以前就应该使用ORM了。现在虽然我们无法通过C#代码重写生成的SQL查询的每一行。但我们希望至少朝正确的方向迈出几步。因此,当我们编写新代码(并在重构的空闲时间)时,我们希望转换为某种ORM。

为此目的,什么是好的ORM?我们使用的是.Net 3.5和ASP.Net(webforms)。除了一些表具有“动态”模式之外,我们的数据库没有什么是非常复杂的。我们有大量的视图(尽管Web应用程序没有使用它),我们使用/使用很少的存储过程。我们的数据库是SQL Server 2005.我们的价格范围尽可能便宜,首选开源。这是一个专有项目,但我们不能使用GPL库等。

关于动态模式:基本上在某些情况下,可以向某些表添加或删除列(具有不同类型)。

我们的视图用法几乎不存在,我们总是可以取出存储过程代码。我相信数据库中只有2或3个。

4 个答案:

答案 0 :(得分:8)

大规模 - https://github.com/robconery/massive

PetaPoco - https://github.com/toptensoftware/petapoco

两者都是单个.cs文件,没有依赖关系,除了GAC中的内容。

(完全披露,PetaPoco是我写的东西)

答案 1 :(得分:4)

我想说的是,对于.NET 3.5,你可以使用免费的LINQ to SQL,支持视图和存储过程,并且学习曲线很小。我认为你在尝试使用时遇到麻烦的唯一一件事就是你的“动态架构”表(你可能想详细说明)。

另一个开源替代方案是nHibernate这是一个很好的ORM,但在我看来学习曲线要​​陡峭得多。

答案 2 :(得分:3)

我会让Justin建议使用Linq-to-SQL - 它真的没死!

如果这不是你的选择,或者你需要反对像SQLite这样的东西,你一定要查看Subsonic 3.0 - 轻量级,易于使用,免费,有源 - 你可以命名。

答案 3 :(得分:1)

我喜欢使用SubSonic来轻松访问数据,它使用T4生成类,因此很容易更改生成的内容。它更像是一个活跃的记录样式数据访问,然后是一个真正的ORM,如nHibernate但linq to sql也不是真正的ORM。