我已经在这几个小时了。我有一个现有的代码库,工作得很好。
转移到Asp.Net Core和最新的Structuremap,现在我遇到了DbContext
的问题。
我收到此错误
指定的LINQ表达式包含对与不同上下文关联的查询的引用
好像SM没有为每个请求创建一个DbContext
。但我无法弄明白为什么?
以下是存储库中的代码段。
private readonly EntityContext _context;
protected readonly DbSet<T> _dbSet;
public Repository(EntityContext context)
{
_context = context;
_dbSet = _context.Set<T>();
}
以下是我尝试使用SM注册上下文的多种方式。
public StructureMapRegistry()
{
var unique = new UniquePerRequestLifecycle();
For<DbContext>().LifecycleIs(unique).ContainerScoped().Use<EntityContext>().ContainerScoped();
For<EntityContext>().LifecycleIs(unique).ContainerScoped().Use<EntityContext>().ContainerScoped();
//ForConcreteType<EntityContext>().Configure.Transient();
//For<DbContext>().ContainerScoped().Use<EntityContext>();
// For<EntityContext>().Use(() => new EntityContext());
For<IUnitOfWork>().ContainerScoped().Use<UnitOfWork>();
For(typeof(IRepository<>)).Use(typeof(Repository<>));
}