【发布时间】:2013-05-25 12:46:27
【问题描述】:
我正在使用来自 https://github.com/huyrua/efprs 的 GenericRepository 模式。我只想选择以 DbContext 作为参数的构造函数。我知道有重复的问题,但来自this 的解决方案没有解决。这是我的配置:
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””。我不知道现在该怎么办。
任何解决方案将不胜感激。
【问题讨论】:
-
“具体类型 Infrastructure.Data.GenericRepository 没有 System.Data.Entity.DbContext 类型的参数”。那是因为
GenericRepository依赖于ObjectContext。不是DbContext。 -
我使用的是同一个库并且有同样的异常。难怪
标签: c# entity-framework repository-pattern structuremap