我仍然在這裏學習,並有關於子集合的問題。我有一個叫做Audio的聚合根,它有一個AudioDownloads集合。NHibernate域模型 - 將子對象添加到集合
下載是下載音頻的每個IP地址的記錄,我不想爲每個音頻重複記錄相同的IP。
在我的領域我有以下功能:
public virtual void Add(AudioDownload download)
{
if (!AudioDownloads.Contains(download)) {
TotalDownloads++;
AudioDownloads.Add(download);
}
}
這就是我如何調用Add功能:
var download = new AudioDownload();
audio.Add(download);
這是返回數據庫中的所有下載此音頻(哪些應該是數千!),即使已經存在,它仍然會添加下載。
我正在使用S#arp和DomainSignature方法來比較我的實體。
這裏是我的域名:
public class AudioDownload : Entity, ITenantSpecific
{
public AudioDownload() { DateAdded = DateTime.Now; }
[DomainSignature]
public virtual Audio Audio { get; set; }
[DomainSignature]
public virtual string Ip { get; set; }
public virtual DateTime DateAdded { get; set; }
}
我的問題是......就算我能得到AudioDownloads不添加重複的條目,我應該被這種方式在所有做什麼呢?
非常感謝!
保羅
你爲什麼要做一個手冊Contains()檢查元素是否已經包含,而不是使用集合的ISet(這會自動執行此操作)? – 2009-12-17 15:24:38
嗨, 我已經嘗試將其設置爲ISet,但它仍然讓我添加一個重複的條目。 我的實體有3個屬性。 -Id - 音頻 -DateTime 請問日期時間屬性使每個下載唯一,或者如果我不使用該財產的[DomainSignature]過濾器應該坐視不理? Paul – 2009-12-17 15:58:01
我認爲你需要覆蓋AudioDownload類上的equals – dotjoe 2009-12-17 20:45:45