10

目前,我正在使用 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);

      }
4

2 回答 2

10

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

OrmLite在命名空间下的ServiceStack.OrmLiteServiceStack.OrmLite.Dapper中包含了最新版本的 Dapper 。


在 ServiceStack 的 v3.9.40 中,Dapper 的这个嵌入式版本将其 API 更改为包含“Dapper”后缀,以避免与同名的 OrmLite 方法发生冲突。您不必注册一个请求范围的 IDbConnection,因为 ServiceStack 的默认服务类已经为您从 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(...);
    }
}
于 2013-03-18T21:55:22.430 回答
5

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

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

于 2013-05-28T01:08:25.773 回答