2011-10-10 75 views
0

我有以下的域模型:刪除行

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」 AssociationSet是「被刪除」狀態的關係。考慮到多重性約束,相應的「Campaign_Content_Target」也必須處於「已刪除」狀態。

必須有辦法從內容集合中刪除行。我肯定錯過了什麼。任何幫助表示讚賞。

回答

1

您將在每個實體實例的相應DbSet上調用Remove方法。

foreach(var content in campaign.Content) 
{ 
    dbContext.Contents.Remove(content); 
}