0
我目前擁有這段代碼。如何設置nhibernate來處理這個問題?
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();
上面的代碼工作,但我覺得有點奇怪,我有這樣做。
我想這樣做
tableB = new TableB
{
TableA = tableA,
TableC = MakeAllTableCs()
};
tableA.TableB.Add(tableB);
nhibernate.Create(a);
nhibernate.Commit();
表C的的集合在內存中被製成,當我嘗試做一個創造,我得到
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();
}
}
好吧我更新了顯示映射。讓我知道你是否需要更多信息。 – chobo2
@ chobo2好像你沒有在保存之前設置對父對象的引用('TableB.TableA'和'TableC.TableB')。 – cremor
好吧,我更新了我目前的工作。 – chobo2