我有自定义的DbContext从IdentityDbContext继承。类看起来是这样的:创建与团结失败与额外的Ctr的DbContext
public class ReaderContext : IdentityDbContext<IdentityUser>
{
//DbSets
public ReaderContext()
: base("name=ReaderDb")
{
System.Data.Entity.Database.SetInitializer<ReaderContext>(null);
Database.Initialize(true);
}
}
当的DbContext看起来像这样,代码创建存储库(即使用ReaderContext)正常工作:(!不删除现有的)
container.RegisterType<IRepository, CustomRepository>(new HierarchicalLifetimeManager());
var repo = container.Resolve<IRepository>();
当我添加另一个构造到ReaderContext,创建CustomRepository不再适用于UnityContainer。
public ReaderContext(DbConnection connection)
: base(connection, true)
{
}
我需要这样做,所以我可以moq上下文与努力。我正在使用Unity容器。除了我在:
2017年8月7日19:02:57.9256:异常: Microsoft.Practices.Unity.ResolutionFailedException:在 依赖解析失败,类型= “DataAccess.Database.Repositores .IRepository“,名称= ”(none)“。发生异常时:解析时。例外情况是: 出现InvalidOperationException - 当前类型, System.Data.Common.DbConnection,是一个抽象类,不能 构成。你是否缺少类型映射? -----------------------------------------------在异常的时间,该容器是:
解决 DataAccess.Database.Repositores.CustomRepository,(无) (从 DataAccess.Database.Repositores.IRepository映射,(无))
解决参数 “上下文”构造 DataAccess.Database.Repositores.CustomRepository(DataAccess.Database.ReaderContext 上下文) 解决DataAccess.Database.ReaderContext,的(无) 解析构造DataAccess.Database.ReaderContext(System.Data.Common的参数的 “连接”。 DbConnection 连接) 解决System.Data.Common.DbConnection,(无)---> System.InvalidOperationException:当前类型, System.Data.Common.DbConnection,是一个抽象类,不能被 构造。你是否缺少类型映射?
为什么添加新的构造函数打破统一配置?此外,我尝试从头开始设置统一,但coudn't使它的工作。也许我不知道如何团结工作,所以任何建议,欢迎:)
太糟糕了,我无法赞扬更多,很好的答案。 “默认情况下,Unity将选择具有最多参数的构造函数。”非常感谢 –