Учитывая простую настройку parent -> child (CK, CK), как это .. У меня проблемы с добавлением нового дочернего объекта и получением родительской ссылки.Поэтому я бы добавил объект таким способом ..
var parent = new Parent{
Children = new List<Child>{
new Child{
Other = otherReference
}
}
};
Или даже добавив его, используя метод Add()
...
parent.Children.Add (newChild {Other = other});
Ссылка на Parent
не передается.Это просто заканчивается как нулевое свойство.Я получаю следующее исключение.
{"Невозможно вставить значение NULL в столбец 'ParentId', таблица 'mssql_test.Children'; столбец не допускает нулевые значения. INSERT завершается ошибкой. \ R \ nУсловиебыл прерван. "}
Я могу сделать это ...
new Child {
Parent = parentReference,
Other = otherReference
}
Но это кажется немного избыточным.Насколько я понимаю, он должен быть в состоянии вывести ссылку самостоятельно.Если это невозможно, возможно, я просто недоразумение.Может кто-нибудь мне помочь?У меня есть схема моего кода ниже.
Классы
class Parent {
int Id { get; set; }
IList<Child> Children { get; set; }
}
class Other {
int Id { get; set; }
}
class Child {
Parent Parent { get; set; }
Other Other { get; set; }
// other properties
}
Отображение
ChildMap() {
CompositeId()
.KeyReference(x => x.Parent, "ParentId")
.KeyReference(x => x.Other, "OtherId");
}
ParentMap(){
HasManyToMany(x => x.Children)
.AsBag()
.ChildKeyColumns.Add(new[] { "ParentId", "OtherId" })
.Inverse()
.Cascade.All())
.Table("[Test]");
}