Я новичок в MonoRail и ActiveRecord и унаследовал приложение, которое мне нужно изменить. У меня есть таблица категорий (Id, Name), и я добавляю FK ParentId, который ссылается на Id в той же таблице, чтобы вы могли иметь отношения родительских / дочерних категорий.
Я пытался добавить это в свой класс модели категории:
[Property]
public int ParentId { get; set; }
Я тоже пытался сделать это так:
[BelongsTo("ParentId")]
public Category Parent { get; set; }
Когда я вызываю метод, чтобы получить все родительские категории (они имеют нулевой ParentId), он отлично работает:
public static Category[] GetParentCategories()
{
var criteria = DetachedCriteria.For<Core.Models.Category>();
return (FindAllByProperty("ParentId", null));
}
Однако, когда я вызываю метод для получения всех дочерних категорий в определенной категории, он выдает ошибку:
public static Category[] GetChildCategories(int parentId)
{
var criteria = DetachedCriteria.For<Core.Models.Category>();
return (FindAllByProperty("ParentId", parentId));
}
Ошибка:
"Оператор UPDATE конфликтовал с ограничением FOREIGN KEY SAME TABLE \" FK_Category_ParentId \ ". Конфликт произошел в базе данных \" UCampus \ ", таблице \" dbo.Category \ ", столбце" Id ". \ r \ nУказание было прекращено. "
Я жестко запрограммировал в параметре parentId значение 1, и я на 100% уверен, что он существует в виде идентификатора в таблице категорий, поэтому я не знаю, почему он выдает эту ошибку. Кроме того, я делаю выбор, а не обновление, так что здесь происходит?
Спасибо за любой вклад по этому вопросу,
Justin