11

DapperExtensions プロジェクトがあるようですが、Dapper プロジェクトには SqlMapperExtensions クラスもあります。重複はありますか?どちらが優先されますか? Dapper.Contrib に関するドキュメントが見つかりません。

4

3 に答える 3

6

Dapper.Contribはアセンブリ名です: https://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib

SqlMapperExtensionshttps://github.com/StackExchange/Dapper/blob/master/Dapper.Contrib/SqlMapperExtensions.cs内の contrib メソッドを含む静的クラスDapper.Contribです。

最良のドキュメントは、テスト ケース クラスです: https://github.com/StackExchange/Dapper/blob/master/Dapper.Tests.Contrib/TestSuite.cs

于 2011-11-22T23:11:30.580 に答える
5

最初の Dapper.Contrib は、Sam との話し合いの後、ずっと前に書きました。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 に答える