DbContextをServiceStackの標準コンテナに登録しました.DbContextがサービスに注入されましたが、間違いなくIDbSet
プロパティはnull
です。Dbcontext IDbsetプロパティがServiceStackに挿入されるとnull null
サービスコンストラクタで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()'のようにフィールドを設定します。 –