我已經在ServiceStack中使用標準容器註冊了我的DbContext,將DbContext注入到服務中,但奇怪的是IDbSet
屬性爲null
,所有其他屬性均如預期。Dbcontext在注入ServiceStack時IDbset屬性爲空IoC
如果我在服務構造函數中新建了DbContext,那麼IDbSet
屬性就像您期望的那樣實例化,只是爲了證明EF的配置已正確設置。所有其他註冊的服務都是正確注入的,沒有這種奇怪的行爲。
我錯過了什麼?
public class AppHost : AppHostBase
{
public override void Configure(Container container)
{
container.AddScoped<IDbContext, MyDataContext>();
// Other registrations here omitted for brevity.
}
}
public interface IDbContext : IDisposable
{
IDbSet<MyEntity> MyEntity { get; set; }
DbChangeTracker ChangeTracker { get; }
DbContextConfiguration Configuration { get; }
Database Database { get; }
int SaveChanges();
Task<int> SaveChangesAsync();
Task<int> SaveChangesAsync(CancellationToken cancellationToken);
DbEntityEntry<T> Entry<T>(T entity) where T : class;
}
當「新建」MyDataContext「時,你使用了一個替代的(即非參數較少的)構造函數嗎? – Stefan
我只是忽略注入的對象,並在構造函數中設置字段像'_dbcontext = new MyDataContext()',所以簽名不會改變。 –