假设我有一个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=?]"}
知道我做错了什么......
答案 0 :(得分:1)
解决。这是由JobMap中的映射问题引起的。