Cómo usar Dapper en ServiceStack

dapper ormlite-servicestack servicestack

Pregunta

Actualmente, estoy usando OrmLite para operaciones DB. También estoy planeando usar Dapper ORM, pero ¿alguien puede indicarme cómo integrar DapperORM en ServiceStack? ¿Debo implementar las interfaces IDbConnection e IDbConnectionFactory con Dapper y el complemento en el contenedor?

  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);

      }

Respuesta aceptada

Dapper funciona como OrmLite en que ambos son métodos de extensión sobre la interfaz subyacente de ADO.NET System.Data.* IDbConnection . Esto significa que puede usar ambos juntos en IDbConnection recuperado de IDbConnectionFactory de OrmLite.

OrmLite incluye una versión reciente de Dapper en ServiceStack.OrmLite en el espacio de nombres ServiceStack.OrmLite.Dapper .


En v3.9.40 de ServiceStack, esta versión integrada de Dapper tenía sus API modificadas para incluir un sufijo 'Dapper' para evitar el conflicto con los métodos OrmLite del mismo nombre. No es necesario que registre IDbConnection con ámbito de solicitud como la clase de servicio predeterminada de ServiceStack que ya la recupera de IDbConnectionFactory por usted.

Dado que, así es como puedes acceder a las API Dapper ORM dentro de un servicio ServiceStack:

public class MyService : Service
{
    public object Any(Request request)
    {
        base.Db.QueryDapper(...);
        base.Db.QueryMultipleDapper(...);
        base.Db.MultiMapDapper(...);
        base.Db.ExecuteDapper(...);
    }
}

Respuesta popular

No sé sobre otros, pero debido a la información sobre Dapper dentro del espacio de nombres Razor, esta respuesta me confundió bastante.

En caso de que otros tengan una experiencia similar, he intentado responder esta misma pregunta de manera básica .



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué