在业务逻辑层中,我确实有一个包含8个步骤的流程。并且在DAL中我使用EntiyFrameWork Code第一种方法。我创建了一个Container对象,它继承了DBContext(使用(var context = new MyContainer))在我必须执行DBoperaions的每个方法中。对于性能部分,我看到我创建它的对象需要时间。我可以在Bll中创建一次该容器的Object(在进程开始时)并将其作为参数传递给所有方法,并在完成所有8个步骤后在进程结束时处理该对象。任何帮助都会得到很高的评价。
答案 0 :(得分:2)
是的,应该每个工作单元只创建一个ObjectContext
。
您可以将OC传递给步骤,也可以只传递所需的部件。例如,如果您只需要查询MyEntities.Foos
某个步骤,则可以执行以下操作:
public class Step4
{
public Step4(IQueryable<Foo> foos)
{
// ...
...然后执行:
var step4Result = new Step4(context.Foos).Execute();
这比传递整个上下文更容易测试。