Я использую новую модель данных сущности ADO.NET для простой базы данных. У меня есть таблица / сущность с первичным ключом (PageID) и внешним ключом ParentID, который ссылается на себя в PageID для отношения родитель / потомок «0..1 ко многим». На странице ASP.Net я использую FormView с asp: DynamicControl, чтобы выразить это как элемент управления. Эта часть работает нормально, за исключением одной важной детали: при отображении страницы список возможных родителей включает сам себя, и установка элемента для родительского элемента не вызывает ошибок и сохраняется в базе данных. Очевидно, что иерархический объект не должен иметь своего родителя, так как мне ограничить это поведение?
Насколько я вижу, мои варианты:
Каким-то образом измените ForeignKey _
edit.ascx в шаблонах полей DynamicData. Это проблематично, потому что я не вижу, как получить ссылку на первичный ключ текущего объекта, чтобы удалить его из возможных вариантов выбора чужой . Кроме того, это потенциально может скрыть любые неиерархические использования fkey refs, когда случается столкновение ключей.
Сделайте несколько джиггери-покеров PreRender на странице, чтобы попытаться удалить ListItem из визуализированного DropDownList. Это не похоже на правильный путь, поскольку это только исправляет это для рассматриваемой страницы. РЕДАКТИРОВАТЬ: Вот как я решаю это в настоящее время.
Какой-то триггер вставки / обновления, чтобы принудительно заставить ParentID иметь нулевое значение, если он совпадает сам по себе. Это нехорошо, потому что оно молча терпит неудачу с точки зрения пользователя.
У кого-нибудь есть лучший способ? Кроме того, дайте мне знать, если мне нужно предоставить более подробную информацию.
-Kelly