У меня в настоящее время есть этот код.
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
Похоже, что это ссылка на TableB для каждого в коллекции TableC.Кажется странным делать это, видя, что я застрял в объекте TableB.Я бы надеялся, что он понял бы это и использовал бы его в качестве ссылки.
Есть ли в любом случае, что я могу сделать это, поэтому мне не нужно иметь ссылку на TableB в каждом из моих объектов TableC?
Изменить отображение
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();
}
}