11

貌似有一个DapperExtensions项目,其实Dapper项目里面也有一个SqlMapperExtensions类。有重叠吗?一个比另一个更受欢迎吗?我在 Dapper.Contrib 上找不到任何文档。

4

3 回答 3

6

Dapper.Contrib是程序集名称:https ://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib

SqlMapperExtensions是包含 contrib 方法的静态类Dapper.Contribhttps ://github.com/StackExchange/Dapper/blob/master/Dapper.Contrib/SqlMapperExtensions.cs

最好的文档是测试用例类:https ://github.com/StackExchange/Dapper/blob/master/Dapper.Tests.Contrib/TestSuite.cs

于 2011-11-22T23:11:30.580 回答
5

在与 Sam 讨论后,我很久以前写了第一个 Dapper.Contrib。我不知道 Extensions-package 的详细信息,它们似乎或多或少地做了相同的 CRUD,但 Contrib-package 在某些情况下可能会更快一些,因为它具有用于查询和接口的内置缓存具有内部“脏”跟踪的基于 POCO。从测试代码中截取:

        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 found

Contrib 没有 Extensions 所拥有的漂亮的谓词系统。注意Dapper.Contrib 这里有一个很好的线程Dapper.Rainbow VS Dapper.Contrib

于 2013-12-17T11:11:04.633 回答
3

我认为 user1003841 指的是https://github.com/tmsmith/Dapper-Extensions

作者是 Thad Smith 和 Page Brooks - 所以这不是 Sam Saffron 的作品。项目页面显示“这个库是与 Dapper.Contrib 分开的”。

于 2012-01-13T01:28:42.157 回答