在.NET上建议一个简单的ORM – 用于维护遗留应用程序的设计

我被指派维护一堆遗留应用程序,这些应用程序在05年没有ORM之前构建了大量的存储过程。 与我合作的开发人员不了解entity framework,也不了解LINQ,也不急于学习。

.NET上是否有ORM为现有数据库表和存储过程提供简单的对象接口?

我很高兴它能让我编写几行代码来获取每个表的类,并且它具有与每列中的数据相对应的属性以及解决外键关系/多对多关系的一些方法或属性 – 转发并反转。

例如,保存一个员工和部门记录

Employee e = new Employee("John", null); Department d = new Department("QA"); d.save(); e.department = d; e.save(); 

无需编写INSERT SQL语句。

编辑:我正在使用MS SQL Server 2008

看看Rob Conery的Massive 。 它很简单,看起来很容易使用。 看起来它需要.NET 4。

SubSonic相当容易使用。 LINQ to SQL也是一个不错的选择。 另外,请查看http://www.codeproject.com/KB/database/LightORMLibrary.aspx 。

我建议你使用PetaPoco ,这是一款非常新鲜的ORM,易于学习。

来自作者网站:

PetaPoco最初受到Rob Conery的Massive项目的启发,但与非动态POCO对象一起使用。 之所以出现,是因为我发现许多使用SubSonic / Linq的项目都很慢或者变成了Linq和CodingHorror的混合包。

我需要一个小巧,快速,易于使用的数据访问层,并且可以在.NET 3.5和/或Mono 2.6上运行(即:不支持动态扩展)。 Rob的Massive声称只有400行代码侵入了我,我想知道是否可以在没有动态的情况下完成类似的事情。

我在.NET 2.0项目中使用了Subsonic ,这很不错。 不幸的是,它似乎不再发展了。

NHibernate也可能是值得关注的,尽管我个人并不喜欢原始的Java Hibernate,但那是几年前的事了。 我也经常使用SubSonic 。 最新的SubSonic更加面向Linq,但特别注重其“ActiveRecord”function。 我认为它涵盖了您尝试做的基于对象的内容。 除了偶尔的错误修复之外,SubSonic的开发不再发生太多,但它是开源的,并且有一个Google小组提供支持问题。 它还支持大量数据库,因为您没有提到您正在使用的数据库。