如何在ServiceStack中使用Dapper

dapper ormlite-servicestack servicestack

目前,我正在使用OrmLite進行數據庫操作。我也打算使用Dapper ORM,但任何人都可以指出我如何在ServiceStack中集成DapperORM。我是否需要將Dapper和插件的IDbConnection和IDbConnectionFactory接口實現到容器中。

  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的工作方式與OrmLite類似,因為它們都是基礎ADO.NET System.Data.* IDbConnection接口的擴展方法。這意味著你可以將它們一起從OrmLite的IDbConnectionFactory檢索的IDbConnection同時使用。

OrmLite包括小巧玲瓏的在最近的版本ServiceStack.OrmLiteServiceStack.OrmLite.Dapper命名空間。


在ServiceStack的v3.9.40中,這個嵌入式版本的Dapper將其API更改為包含“Dapper”後綴,以避免與同名的OrmLite方法發生衝突。您不必註冊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(...);
    }
}

熱門答案

我不了解其他人,但由於有關Razor名稱空間內Dapper的信息,這個答案讓我很困惑。

如果其他人有類似的經歷,我試圖以基本的方式回答同樣的問題。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因