似乎有一个DapperExtensions项目,但在Dapper项目中也有一个SqlMapperExtensions类。有重叠吗?一个比另一个更受欢迎吗?我找不到任何关于Dapper.Contrib的文档。
发布于 2011-11-23 07:11:31
Dapper.Contrib是程序集名称:https://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib
SqlMapperExtensions是包含Dapper.Contrib:https://github.com/StackExchange/Dapper/blob/master/Dapper.Contrib/SqlMapperExtensions.cs中的contrib方法的静态类
最好的文档是测试用例类:https://github.com/StackExchange/Dapper/blob/master/Dapper.Tests.Contrib/TestSuite.cs
发布于 2013-12-17 19:11:05
很久以前,在和萨姆讨论过之后,我写了第一个Dapper.Contrib。我不知道扩展包的细节,它们似乎或多或少做了相同的CRUD-事情,但在某些情况下,Contrib-package可能会更快一些,因为它有一个内置的缓存,既可以用于查询,也可以用于基于接口的POCOs,并带有内部的“是脏”跟踪。摘自测试代码:
using (var connection = GetOpenConnection())
{
connection.Get<User>(3).IsNull();
var id = connection.Insert(new User {Name = "Adam", Age = 10});
//get a user with "isdirty" tracking
var user = connection.Get<IUser>(id);
user.Name.IsEqualTo("Adam");
connection.Update(user).IsEqualTo(false); //returns false if not updated, based on tracking
user.Name = "Bob";
connection.Update(user).IsEqualTo(true); //returns true if updated, based on tracking
user = connection.Get<IUser>(id);
user.Name.IsEqualTo("Bob");
//get a user with no tracking
var notrackedUser = connection.Get<User>(id);
notrackedUser.Name.IsEqualTo("Bob");
connection.Update(notrackedUser).IsEqualTo(true); //returns true, even though user was not changed
notrackedUser.Name = "Cecil";
connection.Update(notrackedUser).IsEqualTo(true);
connection.Get<User>(id).Name.IsEqualTo("Cecil");
connection.Query<User>("select * from Users").Count().IsEqualTo(1);
connection.Delete(user).IsEqualTo(true);
connection.Query<User>("select * from Users").Count().IsEqualTo(0);
connection.Update(notrackedUser).IsEqualTo(false); //returns false, user not foundContrib没有Extensions所具有的漂亮的谓词系统。请注意,这里有一个关于Dapper.Contrib的很好的帖子Dapper.Rainbow VS Dapper.Contrib
发布于 2012-01-13 09:28:42
我想user1003841指的是https://github.com/tmsmith/Dapper-Extensions。
作者是萨德·史密斯和佩奇·布鲁克斯,所以这不是萨姆·萨夫隆的作品。项目页面上写着“这个库是一个独立于Dapper.Contrib的库”。
https://stackoverflow.com/questions/8233314
复制相似问题