用于处置对象上下文的首选模式

时间:2013-09-18 08:51:39

标签: entity-framework entity-framework-4 azure-sql-database azure-worker-roles

在Azure辅助角色中,建议使用以下哪种模式来处置objectcontext。另外,使用这些模式中的任何一种都会以不同的方式影响连接池吗?

public override void Run()
{      
    DatabaseObjectContext ctx = new DatabaseObjectContext()                 
    while (condition)
    {
      ctx.Dosomething();   
    }
    ctx.Dispose();
} 

vs

 public override void Run()
 {                        
     while (condition)
     {
      DatabaseObjectContext ctx = new DatabaseObjectContext()  
      ctx.Dosomething();   
          ctx.Dispose();
     }
  } 

2 个答案:

答案 0 :(得分:2)

ObjectContext不是一个持久的对象。将其视为工作单元模式的实现。所以第二种选择可能更好。

答案 1 :(得分:1)

如果我必须在两者之间做出选择(即我不能或者太难实现,因为Barlomieij说UoW模式),我选择第一个,最后删除ctx.Dispose()并替换将所有内容包装在using语句中。