使用FluentNHibernate自动映射自定义集合

使用FluentNHibernate自动映射自定义集合,nhibernate,collections,fluent-nhibernate,automapping,Nhibernate,Collections,Fluent Nhibernate,Automapping,我正在改造一个非常大的应用程序,使用NHibernate作为其数据访问策略。自动映射一切都进行得很顺利。幸运的是,在构建域层时,我们使用了一个代码生成器。我现在遇到的主要问题是,每个集合都隐藏在从List派生的自定义类后面。比如说 public class League { public OwnerList owners {get;set;} } public class OwnerList : AppList<Owner> { } public class AppList&

我正在改造一个非常大的应用程序,使用NHibernate作为其数据访问策略。自动映射一切都进行得很顺利。幸运的是,在构建域层时,我们使用了一个代码生成器。我现在遇到的主要问题是,每个集合都隐藏在从List派生的自定义类后面。比如说

public class League
{
   public OwnerList owners {get;set;}
}
public class OwnerList : AppList<Owner>  { }
public class AppList<T> : List<T>  { }
公共阶级联盟
{
公共所有者列表所有者{get;set;}
}
公共类所有者列表:AppList{}
公共类应用程序列表:列表{}

我需要写什么样的约定才能完成这项工作?

我认为你不能通过约定来实现这一点。必须创建自动映射替代,然后执行以下操作:

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

“幸运的是,在构建域层时,我们使用了一个代码生成器”-我看不出这是一件好事。公开具体的列表类型是一个很大的设计错误。域和数据库之间存在一致性是一件好事,因此直接域映射很容易。这不是一个好的解决方案,但它是唯一有效的解决方案。