如何设置nhibernate来处理此问题?

如何设置nhibernate来处理此问题?,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我现在有这个代码 tableB = new TableB { TableA = tableA, }; List<TableC> tableC = locations.Select(location => new TableC {

我现在有这个代码

                    tableB = new TableB
                    {
                        TableA = tableA,
                    };

                    List<TableC> tableC = locations.Select(location => new TableC
                    {
                        TableB = tableB
                    }).ToList();

                    tableB.TableC = tableC;

                    tableA.TableB.Add(tableB);
nhibernate.Create(a);
nhibernate.Commit();
tableC的集合是在内存中创建的,当我尝试创建时,我得到了

not-null property references a null or transient value
似乎它想为TableC集合中的每一个引用TableB。这样做似乎有点奇怪,因为我粘在TableB对象中。我本希望它能弄明白这一点,并将其作为参考

我是否可以这样做,这样我就不需要在每个TableC对象中引用TableB

编辑映射

     public class TableAMap : ClassMap<TableA>
        {
            public TableAMap()
            {

                Id(x => x.Id).GeneratedBy.GuidComb();
                HasMany(x => x.).Cascade.All().Inverse();
            }
        }


 public class TableBMap : ClassMap<TableB>
    {
        public TableBMap ()
        {

            Id(x => x.Id).GeneratedBy.GuidComb();
      References(x => x.TableA).Not.Nullable();
            HasMany(x => x.TableC).Cascade.All().Inverse();

        }

    }

  public class TableCMap : ClassMap<TableC>
    {
        public TableCMap ()
        {
            Id(x => x.Id).GeneratedBy.GuidComb();
           References(x => x.TableB).Not.Nullable();
        }
    }
公共类表映射:类映射
{
公共表映射()
{
Id(x=>x.Id).GeneratedBy.GuidComb();
HasMany(x=>x.).Cascade.All().Inverse();
}
}
公共类表映射:类映射
{
公共表映射()
{
Id(x=>x.Id).GeneratedBy.GuidComb();
引用(x=>x.TableA).Not.Nullable();
HasMany(x=>x.TableC).Cascade.All().Inverse();
}
}
公共类表cmap:ClassMap
{
公共表CMAP()
{
Id(x=>x.Id).GeneratedBy.GuidComb();
引用(x=>x.TableB).Not.Nullable();
}
}

如果没有映射和真正的NHibernate代码(在这里调用
session.Save()
),很难说,但很可能您没有保存新的
TableB
对象,而且
TableA.b
上也没有任何级联设置(您需要其中的一个)。

确定我已更新以显示映射。如果需要更多信息,请告诉我。@chobo2似乎在保存之前没有设置对父对象的引用(
TableB.TableA
TableC.TableB
)。
     public class TableAMap : ClassMap<TableA>
        {
            public TableAMap()
            {

                Id(x => x.Id).GeneratedBy.GuidComb();
                HasMany(x => x.).Cascade.All().Inverse();
            }
        }


 public class TableBMap : ClassMap<TableB>
    {
        public TableBMap ()
        {

            Id(x => x.Id).GeneratedBy.GuidComb();
      References(x => x.TableA).Not.Nullable();
            HasMany(x => x.TableC).Cascade.All().Inverse();

        }

    }

  public class TableCMap : ClassMap<TableC>
    {
        public TableCMap ()
        {
            Id(x => x.Id).GeneratedBy.GuidComb();
           References(x => x.TableB).Not.Nullable();
        }
    }