2011-08-13 42 views
5

我正在製作一個圖像網站,我想知道我應該如何構建我的Linq到Sql存儲庫中的創建/更新方法?您應該如何處理存儲庫模式中的父實體和子實體?

我有一個結構類似於照片的實體:

public class Image 
{ 
    public int ID { get; set; } 
    public int OwnerId { get; set; } 
    public string Url { get; set; } 
    public IEnumerable<Tag> Tags { get; set; } 
} 

我有如下表:圖像,標籤,ImageTag

現在,我不知道什麼時候我打電話給我創建圖像的方法在我ImageRepository,我是否也應該在Tags表中創建標籤並在ImageTag表中創建映射?同樣,當我調用UpdateImage時,是否應該檢查標記是否已更改,如果它們已刪除ImageTag表中的條目並添加不同的條目(以及可能向標記表中添加新標記) ?

還是應該這兩個用例都發生在單獨的庫調用中?

基本上,這是怎麼父/子,一個一對多的關係,通常在處理一個典型的LINQ to SQL資料庫?

回答

2

我想說知道模型中實體之間的關係不是存儲庫的職責。畢竟,如果要改變持久化數據的方式(例如,對於非SQL解決方案,或者即使只是更改數據庫模式),實體和模型也不應更改。

所以最好的辦法是有獨立的存儲設備調用,換一個工作單元內的電話。 (A Unit of Work基本上是一個抽象的交易)。

你工作的單位和各種調用庫將抽象的倉庫上方的層。我不知道你的模型的其餘部分,所以這可能是不同的事情。它可能是Image對象的一種方法。你可以有一個Mediator。或者,如果您是從DDD的角度來看這個域服務。

乾杯。

相關問題