10

現在、DB操作にはOrmLiteを使用しています。私も Dapper ORM を使用する予定ですが、DapperORM を ServiceStack に統合する方法を教えてください。IDbConnection と IDbConnectionFactory の両方のインターフェイスを Dapper とプラグインでコンテナーに実装する必要がありますか?

  public override void Configure(Container container) {
        container.Register<IDbConnectionFactory>(
          c => new OrmLiteConnectionFactory(ConfigurationManager.ConnectionStrings["default"].ConnectionString,
                                            SqlServerDialect.Provider));

        container.Register<IDbConnection>(c => c.Resolve<IDbConnectionFactory>().OpenDbConnection()).ReusedWithin(ReuseScope.Request);

      }
4

2 に答える 2

10

System.Data.* Dapper は、どちらも基になる ADO.NET IDbConnectionインターフェイスの拡張メソッドであるという点で、OrmLite のように機能します。これは、OrmLite の IDbConnectionFactory から取得したIDbConnectionで両方を一緒に使用できることを意味します。

OrmLite には、名前空間の下のServiceStack.OrmLiteに最新バージョンの Dapper が含まれています。ServiceStack.OrmLite.Dapper


ServiceStack の v3.9.40 では、Dapper のこの組み込みバージョンの API が変更され、同じ名前の OrmLite メソッドとの衝突を避けるために「Dapper」サフィックスが含まれるようになりました。Request-Scoped IDbConnection を登録する必要はありません。ServiceStack のデフォルトのServiceクラスすでに IDbConnectionFactory から取得しているためです。

そのため、ServiceStack サービス内で Dapper ORM API にアクセスする方法は次のとおりです。

public class MyService : Service
{
    public object Any(Request request)
    {
        base.Db.QueryDapper(...);
        base.Db.QueryMultipleDapper(...);
        base.Db.MultiMapDapper(...);
        base.Db.ExecuteDapper(...);
    }
}
于 2013-03-18T21:55:22.430 に答える
5

他の人については知りませんが、Razor 名前空間内の Dapper に関する情報のために、この回答はかなり混乱しました。

他の人が同様の経験をしている場合に備えて、この同じ質問に基本的な方法で答えようとしました.

于 2013-05-28T01:08:25.773 に答える