是否将 nHibernate 与从通用接口实现的域对象和 DTO 对象一起使用?我试图将我所有的 nHibernate 属性分离到 Domain 对象中,让我的 DTO 和界面保持干净。
当 nHibernate 尝试将接口与具体类相关联时,会出现问题。
NHibernate.MappingException:关联引用未映射的类:IContact
我理解为什么它抱怨使用非休眠界面,但我正在努力寻找一种围绕它进行重组的方法。我的代码的骨架复制如下所示,关于如何更好地构建我的代码的任何想法?
public interface ICompany
{
IList<IContact> Contacts { get; set; }
}
public class CompanyDTO : ICompany
{
private IList<IContact> contacts;
public IList<IContact> Contacts { get { return this.contacts; } set { this.contacts = value; } }
}
[ActiveRecord]
public class Company : ActiveRecordBase<Company>, ICompany
{
private IList<IContact> contacts;
[HasMany(Inverse=true, Table="Contact", ColumnKey="CompanyId")]
[ScriptIgnore]
public IList<IContact> Contacts { get { return this.contacts; } set { this.contacts = value; } }
}
编辑:
我想要一个通用接口,这样我就可以确保它们保持相同的字段(即依靠编译器来保持它们的一致性)。它还允许我在应用程序的视图部分中使用 DTO,但将它们转换为域对象以进行业务和数据访问。此外,alex 的解决方案不起作用,因为 ICompany 的联系人是 IList 类型,而不是 IList。我想将其保留为 IContact,因此我的 DTO 对象不知道 Contact Domain 对象。