【问题标题】:Disable Cascade Delete EF6禁用级联删除 EF6
【发布时间】:2015-09-21 05:34:01
【问题描述】:

我正在尝试使用 EF6 代码优先禁用级联删除。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
}

当我尝试删除表中的记录时出现错误

"无法删除主键值,因为对此的引用 密钥仍然存在。 [外键约束名称= FK_dbo.OperatorActivity_dbo.Operator_OperatorId ]"

我的模型

public class OperatorActivity
{
    public Guid Id { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime? EndDate { get; set; }
    public bool Synched { get; set; }

    public virtual Station Station { get; set; }
    public Guid StationId { get; set; }

    public virtual Operator Operator { get; set; }
    public Guid OperatorId { get; set; }
}

public class Operator
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string LastName { get; set; }
    public string Login { get; set; }
    public byte[] Password { get; set; }

    public virtual  Network Network { get; set; }

    public virtual ICollection<Station> Stations { get; set; }
    public virtual ICollection<OperatorActivity> Activities { get; set; }
    public virtual ICollection<Refill> Refills { get; set; }

    public override string ToString()
    {
        return this.Name + " " + this.LastName;
    }
}

如何禁用级联删除?

【问题讨论】:

  • 您正在尝试先删除主表行,而您应该先删除相关行。
  • 我正在尝试删除“操作员”表拳。我只需要删除 Operator 表并将所有数据保留在 OperatorActivity 表中。
  • 由于外键关系,这是不可能的。 drop foreign key FK_dbo.OperatorActivity_dbo.Operator_OperatorId 在数据库中

标签: ef-code-first entity entity-framework-6 cascade


【解决方案1】:

虽然在保留子行的同时删除引用的(父)行是不合逻辑的,但要允许这样做,您应该删除外键约束。

MySQL 数据库中运行:

alter table OperatorActivity drop 
foreign key FK_dbo.OperatorActivity_dbo.Operator_OperatorId

SQL Server中:

alter table OperatorActivity drop 
constraint FK_dbo.OperatorActivity_dbo.Operator_OperatorId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 2015-04-24
    相关资源
    最近更新 更多