2010-05-24 42 views
2

我正在改造一个非常大的应用程序来使用NHibernate作为它的数据访问策略。 AutoMapping一切正常。幸运的是,当构建领域层时,我们使用了代码生成器。我现在遇到的主要问题是每个集合都隐藏在派生自列表<>的自定义类后面。例如使用FluentNHibernate AutoMapping自定义集合

public class League 
{ 
    public OwnerList owners {get;set;} 
} 
public class OwnerList : AppList<Owner> { } 
public class AppList<T> : List<T> { } 

为了完成这项工作,需要写什么样的公约?

+0

“幸运的是,领域层建成的时候,我们使用一个代码生成器” - 我看不出这将是一件好事。公开具体的列表类型是一个很大的设计错误。 – 2010-05-24 23:22:13

+0

域与数据库之间存在统一性是一件好事,因此直接域映射很容易。 – ScottBelchak 2010-05-25 14:38:14

回答

2

我不认为你将能够通过一个约定来实现这一点。你将不得不创建一个自动映射覆盖,然后执行以下操作:

mapping.HasMany(l => a.owners).CollectionType<OwnerList>(); 
+0

这不是一个好的解决方案,但它是唯一可行的解​​决方案。 – ScottBelchak 2010-06-03 18:49:52