C# 在实体框架中使用带有注入参数的自定义构造函数创建DbContext
我正在处理代码优先数据库,但当我尝试执行“更新数据库”时,我得到以下错误C# 在实体框架中使用带有注入参数的自定义构造函数创建DbContext,c#,.net,entity-framework,C#,.net,Entity Framework,我正在处理代码优先数据库,但当我尝试执行“更新数据库”时,我得到以下错误 The target context 'AllMid.DL.Repository.Implementation.AllMidContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory. 现在对我来说很明显,问题是我没有默认构造函数或IDbContextFactory接
The target context 'AllMid.DL.Repository.Implementation.AllMidContext' is not constructible.
Add a default constructor or provide an implementation of IDbContextFactory.
现在对我来说很明显,问题是我没有默认构造函数或IDbContextFactory接口的实现,但在我使用的示例项目中,我看到这两个都没有。有人知道怎么做吗
我目前有一个类似的DbContext
internal class AllMidContext : DbContext, IAllMidContext
{
public DbSet<TreeEntity> Tree { get; set; }
public AllMidContext(IConfigurationAccess configAccess) : base(configAccess.GetDefaultConnectionString())
{
}
}
现在的问题是,有没有一种方法可以在没有默认构造函数或工厂的情况下实现这一点?我的依赖注入将始终输入参数,因此如何让EF使用我的自定义构造函数?我相信
更新数据库
正在寻找一个没有输入的构造函数。您可以做的是编写一个没有输入的构造函数,并在其主体中进行注入。我更感兴趣的是让它使用具有注入依赖项的客户构造函数,而不是创建默认构造函数。
internal class DataContextAccess : IDataContextAccess
{
private readonly IConfigurationAccess _configAccess;
public DataContextAccess(IConfigurationAccess configAccess)
{
_configAccess = configAccess;
}
public IAllMidContext GetAllMidContext()
{
return new AllMidContext(_configAccess);
}
}