2010-03-25 23 views
0

我的應用程序使用調用使用linq to sql的存儲庫的業務層。linq2sql - 在哪裏登記事務(存儲庫或bll)?

我有一個Item類具有枚舉類型屬性和ItemDetail屬性。

我需要實現一個刪除方法:

(1)始終刪除項目 (2)如果項目。形式是XYZ和ItemDetail不爲空,刪除ItemDetail爲好。

我的問題是這個邏輯應該放在哪裏?

如果我在我的業務邏輯中使用它,則需要兩個獨立的存儲庫調用,每個調用都使用一個單獨的數據上下文。我將不得不包裝這兩個調用是一個System.Transaction(在SQL 2005中)被提升爲分佈式事務,這是不理想的。

我可以將其全部移至單個存儲庫調用,並且該事務將由datacontext隱式處理,但認爲這實際上是業務邏輯,因此不屬於存儲庫。

想法?

嘉莉

+0

任何人得到這個有什麼想法? – 2010-03-29 08:20:03

回答

0

我不知道我真正理解你的問題,但如果它是一個單一的儲存庫 - 你可以有你的資料庫公開兩種不同的方法處理這兩種類型的缺失?那麼確定調用哪個存儲庫方法的邏輯將停留在它看起來最適合的業務層?

或者,也許你可以找到在這個職位有所幫助:Where should the transaction boundary be in a repository pattern?