2014-09-17 4 views
3

я следующие классы ОРМ:ServiceStack Ormlite OnDelete = «КАСКАД» не работает

public class HotelProperties 
{ 
    [AutoIncrement, PrimaryKey] 
    public int Id { get; set; } 

    [Reference] 
    public List<HotelRoomInfo> HotelRoomInfo { get; set; } 
} 

public class HotelRoomInfo 
{ 
    [AutoIncrement, PrimaryKey] 
    public int Id { get; set; } 

    [ForeignKey(typeof(HotelProperties), OnDelete = "CASCADE")] 
    public int HotelPropertiesId { get; set; } 
} 

в db.Load() и db.Save() методы работают прекрасно, однако, когда я пытаюсь удалить HotelProperties, я ожидал HotelRoomInfo быть также удален. Я не уверен, почему он не работает?

Я просмотрел ForeignKeyAttributeTests.cs и кажется правильным. Что может быть неправильным?

ответ

3

Я предполагаю, что вы сидите на этой модели поверх ранее существовавшей схемы базы данных, и что вы не запрашивали ServiceStack , создайте таблицу. Вполне возможно, что только что-либо в скрипте create, используя синтаксис ON DELETE CASCADE во время строительства FOREIGN KEY (в частности, ограничение REFERENCES). Если это так, и если вы создали таблицу и внешний ключ самостоятельно без этот вариант, то: это не будет иметь никакого эффекта.

Эти варианты обсуждаются here on MSDN; найдите «Каскадная ссылочная целостность»

+0

yup your guess is right, я удалил таблицу и воссоздал с помощью ServiceStack, и удаление работает. Благодаря! – icube

Смежные вопросы