2013-12-12 132 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);