【问题标题】:Owin with custom ORM framework (not Entity Framework)Owin 与自定义 ORM 框架(不是实体框架)
【发布时间】:2015-05-03 18:14:02
【问题描述】:

我最近将 Entity 框架与 Identity 和 OWIN 一起使用,但我不想再使用 Entity 而是使用 ServiceStack 中的 OrmLite。

我现在面临的问题是我不太明白如何从 Owin 启动类中替换这部分:

`app.CreatePerOwinContext(AppDbContext.Create);
 app.CreatePerOwinContext<AppUserManager>(AppUserManager.Create);

使用 OrmLite。我该怎么做?

只创建一个返回 OrmLiteFactory 的方法? Altough OrmLiteFactory 没有实现 IDisposable 并且不会工作

【问题讨论】:

    标签: c# asp.net entity-framework ormlite-servicestack


    【解决方案1】:

    OrmLiteConnectionFactory 应该注册为单例。然后,您可以使用它来创建 ADO.NET IDbConnection

    using (var db = dbFactory.OpenDbConnection())
    {
        //
    }
    

    一旦它被注册为 Singleton,您就可以使用类似于 RepositoryBase 类的惰性属性模式来简化数据访问,例如:

    public abstract class RepositoryBase : IDisposable, IRepository
    {
        public virtual IDbConnectionFactory DbFactory { get; set; }
    
        IDbConnection db;
        public virtual IDbConnection Db
        {
            get { return db ?? (db = DbFactory.OpenDbConnection()); }
        }
    
        public virtual void Dispose()
        {
            if (db != null)
                db.Dispose();
        }
    }
    

    这将允许像普通连接一样访问Db 连接,因为它是IDisposable 应该在请求执行后将其释放,例如:

    public class MyController : RepositoryBase
    {
        public List<Poco> GetPocos()
        {
            return Db.Select<Poco>();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-01
      • 2011-10-12
      相关资源
      最近更新 更多