【问题标题】:How to use Dapper in ServiceStack如何在 ServiceStack 中使用 Dapper
【发布时间】:2013-03-07 09:21:48
【问题描述】:

目前,我正在使用 OrmLite 进行数据库操作。我也打算使用 Dapper ORM,但是谁能告诉我如何将 DapperORM 集成到 ServiceStack 中。我是否需要使用 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);

      }

【问题讨论】:

    标签: servicestack dapper ormlite-servicestack


    【解决方案1】:

    Dapper 的工作方式与 OrmLite 类似,因为它们都是底层 ADO.NET System.Data.* IDbConnection 接口的扩展方法。这意味着您可以在从 OrmLite 的 IDbConnectionFactory 检索到的 IDbConnection 上同时使用它们。

    OrmLite 在 ServiceStack.OrmLiteServiceStack.OrmLite.Dapper 命名空间下包含最新版本的 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 库会不会有任何问题,我的应用程序只是带有休息服务的 API。
    • 不,它只是一个库,如果您不启用 RazorFeature 插件,它不会做任何事情。
    • ServiceStack.Razor NuGet 包中缺少 v3.9.44,现在在哪里?
    • 这个答案似乎不再正确。 ServiceStack.Razor.Dapper 的链接导致 404。目前,我无法找到使用“内置”Dapper 的方法。 Dapper 不再是 ServiceStack 的一部分了吗?
    【解决方案2】:

    我不知道其他人,但由于 Razor 命名空间中有关 Dapper 的信息,这个答案让我很困惑。

    如果其他人有类似的经历,我已尝试在 basic way 中回答同样的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2019-07-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 2012-12-03
      • 1970-01-01
      相关资源
      最近更新 更多