我正在使用来自https://github.com/huyrua/efprs的 GenericRepository 模式。我只想选择以 DbContext 作为参数的构造函数。我知道有重复的问题,但这个解决方案没有解决。这是我的配置:
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.AssemblyContainingType<Data.Entity.TokoContainer>();
scan.WithDefaultConventions();
});
x.For<DbContext>().Use<Data.Entity.TokoContainer>();
x.For<Infrastructure.Data.IRepository>()
.Use<Infrastructure.Data.GenericRepository>()
.Ctor<DbContext>().Is(c => c.GetInstance<DbContext>());
});
这会导致错误“StructureMap 异常代码:具体类型 Infrastructure.Data.GenericRepository 没有 System.Data.Entity.DbContext 类型的参数”。
使用时:
x.SelectConstructor<Infrastructure.Data.IRepository>(() => new Infrastructure.Data.GenericRepository((DbContext)null));
x.ForConcreteType<Infrastructure.Data.IRepository>()
.Configure.Ctor<DbContext>().Is(c => c.GetInstance<DbContext>());
导致“StructureMap 配置失败:错误 104”。
从第一个代码中指定,添加参数名称“context”,如下所示:
x.For<Infrastructure.Data.IRepository>()
.Use<Infrastructure.Data.GenericRepository>()
.Ctor<DbContext>("context").Is(c => c.GetInstance<DbContext>());
导致错误“InstanceKey xxx 缺少请求的实例属性“connectionStringName””。我不知道现在该怎么办。
任何解决方案将不胜感激。