ServiceStackでDapperを使用する方法

dapper ormlite-servicestack servicestack

質問

現在、OrmLiteをDB操作に使用しています。 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);

      }

受け入れられた回答

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

OrmLiteは中Dapperの最近のバージョンが含まServiceStack.OrmLiteServiceStack.OrmLite.Dapper名前空間を。


ServiceStackのv3.9.40では、Dapperのこの埋め込みバージョンに、同じ名前のOrmLiteメソッドとの衝突を避けるために、Dapperという接尾辞を含むようにAPIを変更しました。 Request-Scoped IDbConnectionを登録する必要はありません .ServiceStackのデフォルトのServiceクラスはすでにIDbConnectionFactoryから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(...);
    }
}

人気のある回答

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

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



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow