如何使用Set / List / Bag(按代码)在NHibernate中映射一对多

时间:2014-11-12 11:33:43

标签: c# nhibernate nhibernate-mapping mapping-by-code

两个简单的类:

public class Order
{
     public virtual IList<OrderLine> Lines { get; set; }
}

public class OrderLine
{
   ....
}

我尝试使用以下代码进行映射:

public class OrderLineMapping : ClassMapping<OrderLine>
{
    OrderLineMapping ()
    {
         Id(...)
         Property(x=>...)
    }
}

public class OrderMapping : ClassMapping<Order>
{
    OrderMapping ()
    {
         Id(...)
         Property(x=>...)

         // Set, Bag or List
         Set(x=> x.OrderLines, m ={       
});

    }
}

生成架构时,它会说:

  

NHibernate.MappingException:无法确定其类型   OrderLine,用于列:NHibernate.Mapping.Column(id)(...)

我错过了能够让One-To-Many关系工作的原因吗? 如果我跳过在OrderMapping中映射OrderLines属性,并直接保存OrderLine,我没有问题。

另外:有人能指出我可以找到关于按代码映射的好文档的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

找到缺失的部分 - 或者至少找到一个正在运作的部分:

Set(x => x.Lines, m => { }, r => r.OneToMany());