2011-03-16 46 views
0

我盡我所能實現了一種將數據存儲到datacontext的UnitOfWork。沒有太多的解釋,我希望能夠在同一使用中執行兩個查詢。幫助改進UnitOfWork-Interface

藉此,

using (IDataUnitOfWork uow = new Data.SomeContext.Core()) 
{ 
    CustomerRepo repo = new CustomerRepo(uow); 
    Data.Entities.Customer c = repo.GetCustomerById(191); 
    ... 
    c.name = c.name.Replace("_", ""); 
    //c.name = c.name + "_"; 
    //uow.Save(); 
} 

這我覺得是完成任務非常明確和strightforward方式。但是,現在我還有另外一個環境。在某些情況下,這個任務也必須在第二個上下文中執行。

using (IDataUnitOfWork uow = new Provider.TheProviderContext()) 
{ 
    CustomerRepo repo = new CustomerRepo(uow); 
    Data.Entities.Customer c = repo.GetCustomerById(191); 
    ... 
    c.name = c.name.Replace("_", ""); 
    //c.name = c.name + "_"; 
    //uow.Save(); 
} 

這方面並非基於相同的技術,但我覺得上面的示例將反映什麼,我嘗試做(和需要)。在這個時刻,我只能看到這種方式來解決這個問題,,

using (IDataUnitOfWork uow = new Data.SomeContext.Core()) 
{ 
    ... 
    if (anything == true) 
    using (IDataUnitOfWork uow = new Provider.TheProviderContext()) 
    { 
     ... 
    } 
} 

它看起來像一個很好的和明確的工作方式(BCZ所有信息都已經知道第二個「用」來。如果糾正我,我「M完全錯在這裏,因爲我只有這個規劃上還沒有,但它會更好,如果我能叫

using (IDataUnitOfWork uow = new BothProviders()) 

..這反過來要求boths提供商就跑同時他們每個人的任務。我參與了工廠的工作,但它有點令人困惑(但)。我的技能今天終於在此結束了,可悲地說..

+0

http://stackoverflow.com/questions/5171779/dependency-injection – k3b 2011-03-16 08:44:48

+0

的可能的重複取決於你想達到什麼。請記住,工作單元使整個操作成爲原子。如果你想統一提供商考慮適配器模式 – Robert 2011-03-16 08:45:42

+0

羅伯特,http://en.wikipedia.org/wiki/Adapter_pattern感謝評論。我會通讀這個(和更多)。這可能會成爲這個話題的熱門話題, – Independent 2011-03-16 09:12:40

回答

1

取決於您想要達到的目標。請記住,工作單元使整個操作成爲原子。如果你想統一提供商考慮適配器模式

適配器模式適合當你想支持(統一)多個不同的接口在相同的抽象層次,因爲在你的情況下,我想兩個UnitOfWork將做不同的事情。