我有以下ORM课程:
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,看起来是正确的。什么可能是错的?
答案 0 :(得分:3)
我猜测您将此模型置于预先存在的数据库架构之上,并且您没有要求ServiceStack 创建该表。在ON DELETE CASCADE
构造期间(特别是FOREIGN KEY
约束),通过REFERENCES
语法完全可以在创建脚本中执行任何操作。如果是这样,如果您自己创建了表和外键而没有这个选项,那么:它不会有任何影响。
讨论了这些选项here on MSDN;寻找&#34;级联参考完整性&#34;