В проекте, над которым я работаю, мы используем вкладки.Эти вкладки имеют контент.На вкладке может быть несколько объектов контента.Таким образом, у нас может быть вкладка «автомобиль», и эта вкладка автомобиля может отображать объект содержимого седана, объект содержимого внедорожника и объект содержимого грузовика.Пользователь также может указать, что он содержит больше или меньше этих объектов, и упорядочить их по своему усмотрению.Для нас важно поддерживать порядок этих объектов содержимого в соответствии с пользовательской спецификацией.
Вот мои отображения:
На вкладке Отображение:
HasManyToMany(t => t.ContentObjects)
.Table("TabContentObjects")
.ParentKeyColumn("TabID")
.ChildKeyColumn("ContentObjectID")
.AsList(index => index.Column("SortOrder"));
НаОтображение ContentObject:
HasManyToMany(c => c.Tabs)
.Table("TabContentObjects")
.ParentKeyColumn("ContentObjectID")
.ChildKeyColumn("TabID")
.Cascade.SaveUpdate()
.AsList(index => index.Column("SortOrder"));
Таблица сопоставления:
TabContentObjectId TabId ContentObjectId SortOrder int not null
Я могу добавить объект содержимого, изменить порядок содержимогообъект внутри вкладки, и все хорошо.nHibernate добавляет / обновляет SortOrder соответственно.Проблема возникает, когда я пытаюсь удалить объект содержимого.Когда я иду, чтобы удалить вкладки из этого contentObject, contentObject.Tabs выглядит странно.
Вот код, который я использую для удаления вкладок:
//Need to remove each through the contentObject since it is parent
foreach (Tab tab in deleteContentObject.Tabs)
{
tab.RemoveContentObject(deleteContentObject);
}
//in Tab class
public virtual void RemoveContentObject(TabContentObject item)
{
if (ContentObjects == null) ContentObjects = new List<TabContentObject>();
ContentObjects.Remove(item);
}
Если это ЕДИНСТВЕННЫЙ или первый (SortOrder = 0) объект ContentObject на вкладке, я могу удалить его.Если это второй объект содержимого, contentObject.Tabs выглядит как [0] [null], [1] [Tab].Если это четвертый contentObject на вкладке, contentObject.Tabs выглядит как [0] [null], [1] [null], [2] [null], [3] [Tab].Таким образом, в зависимости от того, что столбец SortOrder находится в таблице ассоциации, я, кажется, возвращаю много пустых ссылок, и поэтому не могу удалить из-за нулевой ссылки.Я не могу понять, почему эти нули возвращаются.Любая помощь будет оценена.