我有以下域名模型:
public class Campaign
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Content> Content { get; set; }
}
public class Content
{
public virtual long Id { get; set; }
public virtual string Body { get; set; }
}
这已配置:
modelBuilder.Entity<Campaign>().HasMany(x => x.Content).WithOptional();
在我的服务中,我有以下代码:
Campaign campaign = campaignRepository.GetById(id);
这会将广告系列和任何相关的内容项加载到收藏中,这非常棒。该问题伴随以下代码:
campaign.Name = "new value";
campaign.Content.Clear();
unitOfWork.Commit();
这不会从数据库中删除内容行。它实际上将受影响的行中的内容表中的外键设置为null,但它不会删除行。
然后我尝试将配置修改为:
modelBuilder.Entity<Campaign>().HasMany(x => x.Content).WithRequired();
这只会给我以下例外:来自'Campaign_Content'AssocSet的关系处于'已删除'状态。给定多重性约束,相应的“Campaign_Content_Target”也必须处于“已删除”状态。
必须有一种方法可以从内容集合中删除行。我肯定错过了什么。任何帮助表示赞赏。
答案 0 :(得分:1)
您将在每个实体实例的相应DbSet上调用Remove方法。
foreach(var content in campaign.Content)
{
dbContext.Contents.Remove(content);
}