servicestack - 如何在 ServiceStack 中使用 Dapper

标签 servicestack dapper ormlite-servicestack

目前,我正在使用 OrmLite 进行数据库操作。我也计划使用 Dapper ORM,但谁能指出我如何将 DapperORM 集成到 ServiceStack 中。我是否需要使用 Dapper 和插件在容器中实现 IDbConnection 和 IDbConnectionFactory 接口(interface)。

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

      }

最佳答案

Dapper 的工作方式与 OrmLite 类似,因为它们都是底层 ADO.NET System.Data.* 上的扩展方法。 IDbConnection界面。这意味着您可以在 上同时使用它们。 IDb连接从 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(...);
    }
}

关于servicestack - 如何在 ServiceStack 中使用 Dapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487000/

相关文章:

c# - ORMLite 中的 ServiceStack 如何对父表进行简单引用?

servicestack - 存储库设计: Sharing a transaction

c# - 通用查询方法

c# - Servicestack.Text ConvertTo<> tomap 具有不同名称的属性或任何其他解决方案?

c# - ServiceStack:存在时从目录提供静态文件?

servicestack - 有没有办法使用 Linq 表达式限制 OrmLite 选择返回的 TOP 行?

ms-access - Dapper 和 System.Data.OleDb DbType.Date 抛出 'OleDbException : Data type mismatch in criteria expression'

servicestack - 如何将 ServiceStack AuthSession 注入(inject)到我的存储库类中?

c# - 如何在方法调用中传递动态参数

c# - 如何在不同的表中写入我的 FK 值? C# | SQLite