我正在導入可能存在或可能不存在於我的數據庫中的數據。我希望NHibernate將任何實體與現有的數據庫關聯(如果存在的話可能只是設置主鍵/ ID),或者如果不存在,則創建一個新的實體。我爲我的框架(MVC 2,NHibernate,Fluent)使用S#arp架構。獲取現有實體(如果它存在或創建一個新實體)
我已將[HasUniqueDomainSignature]屬性添加到類中,並且將[DomainSignature]屬性添加到要用於比較的屬性中。我能想到這樣做(這不是一個可接受的解決方案,甚至有可能不會正常工作)的唯一方法是以下(僞C#):
foreach (Book importedBook in importedBooks){
foreach (Author author in importedBook.Authors){
if (!author.IsValid()){ // NHibernate Validator will check DomainSignatures
author = _authorRepository.GetByExample(author); // This would be to get the db object with the same signature,
//but I don't think I could even update this as I iterate through it.
}
}
}
正如你所看到的,這既是凌亂和非感性。除此之外,我在這本書(主題,格式等)上有六個關聯,並且沒有任何意義。有一個簡單的方法可以做到這一點,我錯過了。我不是NHibernate的新手,但我絕對不是專家。
你是正確的,我試圖使用NHibernate的導入我的數據。基本上,我有一個系統已經有一些作者(和書籍)。我收到了一個有更多作者(和書籍)的數據源。我想採取這種飼料,並將書籍/作者導入我尚未擁有的系統中。在導入中還有很多事情發生,這就是爲什麼我要轉換爲域模型並使用NHibernate導入(而不是將其保存在數據集中並使用ADO導入數據。) 這是可能的? – Jamie 2010-04-29 21:06:46
我猜這是可能的,但我不知道該怎麼做。我的建議是使用不同的工具來進行導入。 – Lester 2010-04-30 11:49:40