У меня есть самоссылочные отношения в сущности, и я не могу понять это на протяжении всей жизни.
У меня есть тип "Project", который имеет ряд свойств, которые дляэтот случай не имеет значения, но интересная часть заключается в следующем:
ca.ManyToOne(x => x.Parent, map =>
{
map.Class(typeof(Project));
map.Column("ParentProjectID");
});
ca.List(x => x.Children, map =>
{
map.Key(k => k.Column("ParentProjectID"));
map.Index(i =>
{
i.Column(x =>
{
x.Default(1);
x.Name("Position");
});
});
map.Inverse(true);
map.Lazy(CollectionLazy.NoLazy);
map.Cascade(Cascade.All | Cascade.DeleteOrphans);
},
e => e.OneToMany(x => x.Class(typeof(Project))));
Проблема, с которой я сталкиваюсь, заключается в том, что при создании моих проектов и подпроектов поле «Позиция» не устанавливаетсяв БД он просто остается как «1» или «ноль» в зависимости от опции, которую я установил.Для списка типов вам нужно заполненное поле индекса, если их больше одного, в противном случае вы получите исключение типа ListDictionaryInternal
с сообщением «пустой столбец индекса для коллекции» для имени вашей коллекции.
Проект создается в БД импортером, и индекс должен генерироваться автоматически на основе конфигурации сопоставления / NH.
У кого-нибудь есть опыт в этой области?Я просто хочу, чтобы он автоматически заполнил индекс, иначе просто перечисление дочерних элементов не сработает.