【发布时间】:2017-08-09 08:44:22
【问题描述】:
我已经在 ServiceStack 中使用标准容器注册了我的 DbContext,DbContext 被注入到服务中,但奇怪的是 IDbSet 属性是 null,所有其他属性都符合预期。
如果我在 Service 构造函数中新建 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;
}
【问题讨论】:
-
在“newing-up”
MyDataContext时是否使用替代(即非无参数)构造函数? -
我只是忽略了注入的对象,并在构造函数中将字段设置为
_dbcontext = new MyDataContext(),这样签名就不会改变。
标签: c# entity-framework servicestack ioc-container dbcontext