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();
    }
不,这里有几件事对我来说没有意义:

  • workpost“Id”属性在select语句中出现两次
  • 有一个select引用名为“idx”的列,但该列不是任何fluent映射的一部分

  • 有谁能帮忙解释一下吗?

    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