我正在尝试将我的第一个 mvc 应用程序转换为解耦框架。
我有以下层 MVC Web 层、控制器层、域层、服务层、数据层和共享项目
我的测试工作正常,使用结构图和注入依赖项。我的主要障碍是这个。
我正在处理一个 oracle 数据库,并且需要在运行时重新映射实体框架中包含的模式。我通过使用 BrandonHayes 适配器来解决这个问题(我稍微修改了它)。
对于我的服务层测试,我模拟了对象上下文,因此它不会针对真实数据库运行。
private Mock<ICLObjectContext> _clmock = new Mock<ICLObjectContext>();
对于我的数据单元测试,我做了这样的事情,这样我就可以对我的测试数据库进行测试,并使用事务,我可以在测试后回滚。
//This allows us to remap the schema
Dictionary<string,string> mappingschemas = new Dictionary<string,string>();
mappingschemas.Add("CLAPORTAL","CLAPORTALTEST");
mappingschemas.Add("QCTL","QTEST");
_context = new CLObjectContext(ec, mappingschemas);
ObjectFactory.Inject(typeof(ICLObjectContext), _context);
这很好用。问题是当我尝试真正运行该应用程序时。
我不得不删除这个构造函数,只留下一个简单的 0 参数构造函数,以便 Structuremap 可以在运行时创建对象上下文,因此不能进行任何模式映射。
因为 Web 项目没有引用数据层,因此对 ICLObjectContext 一无所知,我如何告诉结构映射,通过一些配置,我想创建一个新字典,将模式 x 映射到模式 y,
服务层有对数据层的引用,所以我猜我需要在那里做,因为 web 项目可以引用服务层。
这会是对的吗?嗯,我刚刚让自己陷入困境,看不到出路。
谢谢