【发布时间】: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