目前,我正在使用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);
}
答案 0 :(得分:10)
Dapper的工作方式与OrmLite类似,因为它们都是基础ADO.NET System.Data.*
IDbConnection接口的扩展方法。这意味着您可以在从OrmLite的IDbConnectionFactory中检索到的 IDbConnection 上同时使用它们。
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(...);
}
}
答案 1 :(得分:5)
我不了解其他人,但由于有关Razor名称空间内Dapper的信息,这个答案让我很困惑。
如果其他人有类似的经历,我试图在basic way中回答同样的问题。