我目前正在使用EF Code First 4.3并启用迁移,但禁用了自动迁移。
我的问题很简单,是否存在与模型配置等效的数据注释.WillCascadeOnDelete(false)
我想装饰我的类,以便外键关系不会触发级联删除。
代码示例:
public class Container
{
public int ContainerID { get; set; }
public string Name { get; set; }
public virtual ICollection<Output> Outputs { get; set; }
}
public class Output
{
public int ContainerID { get; set; }
public virtual Container Container { get; set; }
public int OutputTypeID { get; set; }
public virtual OutputType OutputType { get; set; }
public int Quantity { get; set; }
}
public class OutputType
{
public int OutputTypeID { get; set; }
public string Name { get; set; }
}
我想做这样的事情:
public class Output
{
[CascadeOnDelete(false)]
public int ContainerID { get; set; }
public virtual Container Container { get; set; }
[CascadeOnDelete(false)]
public int OutputTypeID { get; set; }
public virtual OutputType OutputType { get; set; }
public int Quantity { get; set; }
}
这样我就可以正确地构建迁移。目前支持级联删除的外键关系。
除了使用模型配置以外的任何想法?
答案 0 :(得分:19)
不,没有这样的等价物。您必须使用流畅的API有选择地删除级联删除,或者必须删除OneToManyCascadeDelete
约定以全局删除它。
答案 1 :(得分:2)
创建一个映射类(流利的语法)并使用以下代码:
// add relationships "Post" and "User" to a "Comment" entity
this.HasRequired(t => t.Post)
.WithMany(t => t.Comments)
.HasForeignKey(d => d.PostID)
.WillCascadeOnDelete(false); // <---
this.HasOptional(t => t.User)
.WithMany(t => t.Comments)
.HasForeignKey(d => d.UserID)
.WillCascadeOnDelete(false); // <---
如果您需要更多信息,这里有一个关于如何设置流畅映射的nice post。
答案 2 :(得分:0)
只需使FK属性可以为空即可防止级联删除发生:
public int? OutputTypeID { get; set; }