我一直在研究像Dapper这样的所谓的“微型ORM”,并且(由于它依赖于.NET 4.0,所以程度较轻),因为自我们当前的系统以来,这些方法在工作中可能比成熟的ORM更容易实现它高度依赖存储过程,因此需要大量重构才能与NHibernate或EF之类的ORM一起使用。与功能齐全的ORM相比,使用其中之一有什么好处?这似乎是围绕一个数据库连接只是薄薄的一层仍然强迫你写原始SQL -也许我错了,但我总是告诉了奥姆斯的原因首先是,所以你没有写SQL,它可以自动生成;特别是对于多表联接和表之间的映射关系,这在纯SQL中是很困难的,但是对于ORM来说却是微不足道的。
例如,看一个Dapper的例子:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
这与使用手动ADO.NET数据层有什么不同,除了您不必编写命令,设置参数并且我想使用Builder将实体映射回去外。看起来您甚至可以使用存储过程调用作为SQL字符串。
在使用Micro ORM有意义的地方,我还缺少其他明显的好处吗?我真的没有看到它如何通过使用ADO.NET的“旧”方式来节省任何东西,除了可能的几行代码外-您仍然必须写出找出需要执行哪些SQL(这可能会变得麻烦)以及您仍然必须映射表之间的关系(IMHO ORM最有帮助的部分)。
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
再dog.First().Age
访问属性。