我正在使用EF 4.1,我正在尝试将POCO映射到现有数据库。这是正常工作,直到我尝试删除其他项具有依赖项的项目。我想启用级联删除,这样当删除我的第一个项目时,所有依赖项也将被删除(我相信这称为级联删除)。
我尝试在OnModelCreating中启用它:
modelBuilder.Entity<Component>()
.HasMany(c => c.Specifications)
.WithRequired(s => s.Component)
.Map(m => m.MapKey("ComponentId"))
.WillCascadeOnDelete(true);
但是,我仍然得到The DELETE statement conflicted with the REFERENCE constraint
例外。
数据库非常简单:
组件:
ComponentId (PK) Description
规范:
SpecificationID (PK) Description ComponentID (FK)
我创建了以下两个类来匹配此设置:
public class Specification
{
[Key]
[Required]
public int Id { get; set; }
[MaxLength(50)]
[Required]
public string Description { get; set; }
public virtual Component Component { get; set; }
}
和
public class Component
{
[Key]
[Required]
public int Id { get; set; }
[MaxLength(50)]
[Required]
public string Description { get; set; }
public virtual ICollection<Specification> Specifications { get; set; }
}
答案 0 :(得分:2)
模型中的级联删除需要在数据库中进行级联删除。如果您让EF为您重新创建数据库,它将自动设置它。如果您不能让EF这样做,那么您必须: