NHibernate组件与父级的一对多关系

时间:2009-08-06 22:33:38

标签: c# nhibernate fluent-nhibernate

假设我有一个Queue表和一个Job表。在Job表中,Queue表有一个外键列QueueId,即

  

Queue.Id< - Job.QueueId

使用Fluent NHibernate将它映射到Queue类中的属性非常简单,即

/* QueueMap */
HasMany(x => x.Jobs)
   .KeyColumnNames.Add("QueueId");

但是假设我有一个很好的理由在中间进行课程,比如说:

public class Queue 
{
    public Group Group { get; set; }
}

public class Group
{
    public IList<Job> Jobs { get; private set; }
}

然后我需要使用Component来映射它,即

/* QueueMap */

Component(
    x => x.Group,
    y => y.HasMany(x => x.Jobs).KeyColumnNames.Add("QueueId")
);

当我这样做时,我得到以下内容:

{"could not initialize a collection: 
[Queue.Group.Jobs#832fc413-c282-48e8-8cb6-d2a70b0b8de4]
[SQL: SELECT values0_.QueueId as QueueId1_, values0_.Id as Id1_, values0_.Id 
 as Id16_0_, (....) FROM dbo.Jobs values0_ WHERE values0_.QueueId=?]"}

知道我做错了什么......

1 个答案:

答案 0 :(得分:1)

解决。这是由JobMap中的映射问题引起的。