2013-12-12 128 views
0

我正在研究一个应用程序使用Web服务,并通过EF4将数据直接推送到SQL Server 2008数据库。我需要打破从WS中下拉数据,更新SQL中的记录以及删除WS中不再存在的SQL记录的过程,因为WS本身可能有时非常脆弱,并且它证明更简单也更容易如果我使用单独的方法来处理重试某些步骤,而不是尝试将所有步骤都塞进一个单独的方法,则需要排除故障。我的问题是这样的:当我创建一个模型的实例(MyEntities context = new MyEntities())时,我可以将它传递给其他方法,以避免两个不同实例尝试更新数据库的问题不同并相互覆盖?如果答案是肯定的,我该怎么做?实体框架:跨方法使用模型的相同实例?

我在想,我应该用ref关键字添加它作为一个说法,一拉:

MyEntities context = new MyEntities(); 
CallSomeOtherMethod(ref context, otherinfo); 

internal static void CallSomeOtherMethod(ref MyEntities entity, String[] otherinfo) 
{ 
    entity.DoSomething(); 
... 

的思考?

回答

1

首先,没有必要为ref,如果您打算将替换为上下文到另一个方法内部,则只需要这样做。

二,想想在上课层面,你是在面向对象的世界。这意味着您不会将db上下文传递给个别方法,而是传递给具有其特定职责的类。

public class SomeService 
{ 
    private DbContext _context; 

    public SomeService (DbContext ctx) 
    { 
     this._context = ctx; 
     ... 
    } 

    // now, context is available for all methods inside the class 

然后

// pass existing context 
    SomeService service = new SomeService(context);