当我尝试使用代码优先迁移时出现此错误。
我的上下文有一个带有连接名称的构造函数。
public class VeraContext : DbContext, IDbContext
{
public VeraContext(string NameOrConnectionStringName = "VeraDB")
: base(NameOrConnectionStringName)
{
}
public IDbSet<User> Users { get; set; }
public IDbSet<Product> Products { get; set; }
public IDbSet<IntCat> IntCats { get; set; }
}
此连接名称在项目运行时使用 ninject 注入,我还在上面的代码中将其指定为默认值,但这没有帮助。
kernel.Bind<IDbContext>()
.To<VeraContext>()
.WithConstructorArgument("NameOrConnectionStringName", "VeraDB");
当我尝试使用“Enable-Migrations”添加迁移时抛出错误:
目标上下文“VeraData.EF.Infrastructure.VeraContext”是不可构造的。添加默认构造函数或提供 IDbContextFactory 的实现。
如果我从中删除构造函数,VeraContext
它将起作用,但会创建另一个VeraData.EF.Infrastructure.VeraContext
以其名称为名称的数据库。
我认为ninject
仅在项目运行时传递连接字符串,而不是在我使用代码优先迁移时传递。无论如何,在使用代码优先迁移时,我可以为连接名称注入/提供默认值吗?