Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ServiceStack IoC中注入时,Dbcontext IDbset属性为空_C#_Entity Framework_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack_Ioc Container_Dbcontext - Fatal编程技术网 servicestack,ioc-container,dbcontext,C#,Entity Framework,servicestack,Ioc Container,Dbcontext" /> servicestack,ioc-container,dbcontext,C#,Entity Framework,servicestack,Ioc Container,Dbcontext" />

C# 在ServiceStack IoC中注入时,Dbcontext IDbset属性为空

C# 在ServiceStack IoC中注入时,Dbcontext IDbset属性为空,c#,entity-framework,servicestack,ioc-container,dbcontext,C#,Entity Framework,servicestack,Ioc Container,Dbcontext,我已经在ServiceStack中的标准容器中注册了DbContext,DbContext被注入到服务中,但奇怪的是,IDbSet属性是null,所有其他属性都是预期的 如果我在服务构造函数中新建DbContext,IDbSet属性将按照您的预期实例化,以证明EF的配置已正确设置。所有其他注册的服务都被正确地注入,没有这种奇怪的行为 我错过了什么 public class AppHost : AppHostBase { public override void Configure(Con

我已经在ServiceStack中的标准容器中注册了DbContext,DbContext被注入到服务中,但奇怪的是,
IDbSet
属性是
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;
}
公共类AppHost:AppHostBase
{
公共覆盖无效配置(容器)
{
container.addScope();
//为简洁起见,此处省略了其他注册。
}
}
公共接口IDbContext:IDisposable
{
IDbSet MyEntity{get;set;}
DbChangeTracker ChangeTracker{get;}
DbContextConfiguration配置{get;}
数据库{get;}
int SaveChanges();
任务saveChangesSync();
任务保存更改同步(CancellationToken CancellationToken);
DbEntityEntry条目(T实体),其中T:类;
}

我通过这样更改注册来解决这个问题

container.Register(i=>newmydatacontext()).ReusedWithin(ReuseScope.Request)

我的原始注册
container.addScope()
是自动连线注册类型的缩写<代码>container.RegisterAutoWiredAs().ReusedWithin(ReuseScope.Request)


我想知道Func容器在使用AutoWired时是否正在尝试解析iDbSet属性。这就解释了为什么它们最终为空。

在“新建”MyDataContext时,是否使用替代(即无参数)构造函数?我只是忽略注入的对象,并在构造函数中设置字段,如so
\u dbcontext=new MyDataContext()
,这样签名就不会更改。