NHibernate:为什么';我的探查器查询是否与我的fluent映射对应?
我有一个流畅的映射:NHibernate:为什么';我的探查器查询是否与我的fluent映射对应?,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我有一个流畅的映射: sealed class WorkPostClassMap : ClassMap<WorkPost> { public WorkPostClassMap() { Not.LazyLoad(); Id(post => post.Id).GeneratedBy.Identity().UnsavedValue(0); Map(post => post.WorkDone); R
sealed class WorkPostClassMap : ClassMap<WorkPost>
{
public WorkPostClassMap()
{
Not.LazyLoad();
Id(post => post.Id).GeneratedBy.Identity().UnsavedValue(0);
Map(post => post.WorkDone);
References(post => post.Item).Column("workItemId").Not.Nullable();
References(Reveal.Property<WorkPost, WorkPostSheet>("Owner"), "sheetId").Not.Nullable();
}
不,这里有几件事对我来说没有意义:
有谁能帮忙解释一下吗?idx列在选择列表中,因为您已将Sheet.WorkPosts映射为有序列表。设置列表中的项目顺序需要idx列。我不确定为什么id属性在select语句中出现两次
顺便说一下,未保存的值0是标识字段的默认值,因此您可以根据需要删除
.UnsavedValue(0)
。idx列位于选择列表中,因为您已将Sheet.WorkPosts映射为有序列表。设置列表中的项目顺序需要idx列。我不确定为什么id属性在select语句中出现两次
顺便说一下,未保存的值0是标识字段的默认值,因此您可以根据需要删除
.UnsavedValue(0)
。您能否确认WorkPostSheet
的WorkPosts
属性的声明?另外,请提供WorkItem映射。感谢您的快速回复,但我不明白你要我确认什么。你能说得更具体一点吗?你能确认WorkPostSheet
的WorkPosts
属性的声明吗?另外,请提供WorkItem映射。谢谢你的快速回复,但我不明白你想要我确认什么。你能再具体一点吗?
sealed class WorkPostSheetClassMap : ClassMap<WorkPostSheet>
{
public WorkPostSheetClassMap()
{
Id(sheet => sheet.Id).GeneratedBy.Identity().UnsavedValue(0);
Component(sheet => sheet.Period, period =>
{
period.Map(p => p.From, "PeriodFrom");
period.Map(p => p.To, "PeriodTo");
});
References(sheet => sheet.Owner, "userId").Not.Nullable();
HasMany(sheet => sheet.WorkPosts).KeyColumn("sheetId").AsList();
}
sealed class WorkItemClassMap : ClassMap<WorkItem>
{
public WorkItemClassMap()
{
Not.LazyLoad();
Id(wi => wi.Id).GeneratedBy.Assigned();
Map(wi => wi.Description).Length(500);
Version(wi => wi.LastChanged).UnsavedValue(new DateTime().ToString());
}
}
SELECT workposts0_.sheetId as sheetId2_,
workposts0_.Id as Id2_,
workposts0_.idx as idx2_,
workposts0_.Id as Id2_1_,
workposts0_.WorkDone as WorkDone2_1_,
workposts0_.workItemId as workItemId2_1_,
workposts0_.sheetId as sheetId2_1_,
workitem1_.Id as Id1_0_,
workitem1_.LastChanged as LastChan2_1_0_,
workitem1_.Description as Descript3_1_0_
FROM "WorkPost" workposts0_
inner join "WorkItem" workitem1_ on workposts0_.workItemId=workitem1_.Id
WHERE workposts0_.sheetId=@p0;@p0 = 1