如何在ServiceStack中使用Dapper

Sun*_*nny 10 servicestack dapper ormlite-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);

      }
Run Code Online (Sandbox Code Playgroud)

myt*_*thz 10

Dapper的工作方式与OrmLite类似,因为它们都是基础ADO.NET System.Data.* IDbConnection接口的扩展方法.这意味着你可以将它们一起在同时使用的IDbConnection从OrmLite的IDbConnectionFactory检索.

OrmLite 在命名空间下的ServiceStack.OrmLite中包含最新版本的Dapper ServiceStack.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(...);
    }
}
Run Code Online (Sandbox Code Playgroud)


Ram*_*gid 5

我不了解其他人,但由于有关Razor名称空间内Dapper的信息,这个答案让我很困惑.

如果其他人有类似的经历,我试图以基本的方式回答同样的问题.