实体框架数据注释等效.WillCascadeOnDelete(假)的;(Entity Framewo

2019-06-24 03:42发布

我目前使用EF代码第一次4.3迁移启用,但自动迁移禁用。

我的问题很简单,就是有一个数据注解等效模型配置.WillCascadeOnDelete的(假)

我想装饰我的班,这样的外键关系不会触发级联删除。

代码示例:

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; }
}  

这样,我就能够正确脚手架迁移。 该脚手架进行级联的时刻删除的外键关系。

任何想法,除了使用型号配置?

Answer 1:

没有没有这样的等价物。 您必须使用流畅API删除级联选择性删除,或者您必须删除OneToManyCascadeDelete约定在全球范围内将其删除。



Answer 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); // <---

这里是一个不错的职位如何,如果你需要更多的信息建立流畅的映射。



Answer 3:

只是使FK属性为空的,可以防止级联的发生删除:

public int? OutputTypeID { get; set; }


文章来源: Entity Framework Data Annotations equivalent of .WillCascadeOnDelete(false);