Comment utiliser Dapper dans ServiceStack

dapper ormlite-servicestack servicestack

Question

Actuellement, j'utilise OrmLite pour les opérations de base de données. Je prévois également d'utiliser Dapper ORM, mais est-ce que n'importe qui peut m'indiquer comment intégrer DapperORM dans ServiceStack? Dois-je implémenter les interfaces IDbConnection et IDbConnectionFactory avec Dapper et le plug-in dans le conteneur.

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

      }

Réponse acceptée

Dapper fonctionne comme OrmLite dans la mesure où ce sont les deux méthodes d'extension sur l'interface ADO.NET System.Data.* IDbConnection sous-jacente. Cela signifie que vous pouvez les utiliser ensemble sur la IDbConnection récupérée à partir de IDbConnectionFactory d'OrmLite.

OrmLite inclut une version récente de Dapper dans ServiceStack.OrmLite sous l'espace de noms ServiceStack.OrmLite.Dapper .


Dans la v3.9.40 de ServiceStack, cette version intégrée de Dapper avait ses API modifiées pour inclure un suffixe «Dapper» afin d'éviter les conflits avec les méthodes OrmLite du même nom. Vous n'avez pas besoin d'enregistrer une IDbConnection de type Request-Scoped car la classe de service par défaut de ServiceStack la récupère déjà pour vous dans IDbConnectionFactory.

Cela étant, voici comment accéder aux API Dapper ORM dans un service ServiceStack:

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

Réponse populaire

Je ne sais pas pour les autres, mais à cause des informations concernant Dapper dans l'espace de noms Razor, cette réponse m'a un peu troublé.

Au cas où d'autres auraient une expérience similaire, j'ai tenté de répondre à cette même question de manière simple .




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi