【发布时间】:2016-09-03 04:30:38
【问题描述】:
我有两个实体如下:
public class FirstEntity
{
public int Id { get; set; }
public ICollection<SecondEntity> SecondEntityCollection { get; set; }
}
public class SecondEntity
{
[Key]
[Column(Order = 0)]
public int FirstEntitySomeId { get; set; }
[Key]
[Column(Order = 1)]
public int SecondEntityId { get; set; }
}
我的ModelBuilder设置如下
modelBuilder.Entity<FirstEntity>()
.HasMany(x => x.SecondEntity)
.WithRequired()
.HasForeignKey(x => x.FirstEntitySomeId);
删除FirstEntity 对象时,我执行以下操作:
var firstEntity=this.context.FirstEntities.Where(x=>x.Id==someId);
firstEntity.SecondEntityCollection.Clear();
this.context.FirstEntities.Remove(firstEntity);
this.context.SaveChanges();
但是我仍然得到以下异常:
DELETE 语句与 REFERENCE 约束“....”冲突。冲突发生在数据库“Database”、表“dbo.SecondEntity”、列“FirstEntitySomeId”中。
如何在删除firstEntity 对象之前正确清除集合?
值得一提的是,我正在尝试避免级联删除。我确实想删除数据库中的孤立条目。但是,如果最好的解决方案/做法是使用级联删除,我会使用它。
这可能吗?
【问题讨论】:
-
I am trying to avoid cascade deleting:这是否意味着您需要将孤立数据保留在数据库中? -
不,我还想删除集合中的子条目。我只是想暂时避免使用
WillCascadeOnDelete()。但是,如果这是最好的选择,我会使用它。
标签: c# entity-framework-6