【发布时间】:2010-04-29 20:25:51
【问题描述】:
我正在导入数据库中可能已经存在或不存在的数据。我希望 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 fluent-nhibernate domain-driven-design s#arp-architecture