2
我想從一個存儲庫,而不是服務類訪問數據庫(增加制衡 - 不知道這是矯枉過正壽),即如何在ServiceStack存儲庫注入or連接ormlite?
public class TodoRepository // : BaseRepository derive the class and inject IDbConnection somehow?
{
public List<Todo> GetByIds(long[] ids)
{
return Db.Select<Todos>(t => Sql.In(t.id, ids)); <-- how to get 'Db' in here
}
}
服務基類已經允許通過ormlite直接訪問數據庫的使用因此,「DB」的對象:
public class Service : IService, IRequiresRequestContext, IServiceBase, IResolver, IDisposable
{
public virtual IDbConnection Db { get; }
}
導致我相信我能做到這一點也許這樣我就可以在派生類中使用「DB」:
public class BaseRepository: IDisposable
{
public virtual IDbConnection Db { get; }
}
我APPHOST有這條線在它的連接字符串中傳遞並註冊庫:
container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider));
container.Register(new TodoRepository());
如何注入或自動裝配起來的IDbConnection到BaseRepository類?我已經嘗試在AppHost中註冊和自動裝載BaseRepository,但沒有運氣。