目前,我正在使用OrmLite进行数据库操作。我也打算使用Dapper ORM,但任何人都可以指出我如何在ServiceStack中集成DapperORM。我是否需要将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);
}
Dapper的工作方式与OrmLite类似,因为它们都是基础ADO.NET System.Data.*
IDbConnection接口的扩展方法。这意味着你可以将它们一起从OrmLite的IDbConnectionFactory检索的IDbConnection同时使用。
OrmLite包括小巧玲珑的在最近的版本ServiceStack.OrmLite下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(...);
}
}