2013-02-08 84 views
2

當我刪除一臺計算機時,有什麼辦法可以讓刪除級聯發生?基本上,當我刪除一臺計算機時,我希望它刪除實例及其所有參考,但環境和產品除外。EF5代碼第一個級聯刪除

計算機實體:

public class Computer 
{ 
    [Key] 
    public int Id { get; set; } 

    public string IpAddress { get; set; } 

    public string Name { get; set; } 

    public string UserFriendlyName { get; set; } 

    public string Description { get; set; } 
} 

實例實體:

public class Instance 
{ 
    public Instance() 
    { 
     TestResults = new HashSet<TestResult>(); 
     Environments = new HashSet<Environment>(); 
    } 

    [Key] 
    public int Id { get; set; } 

    public string Name { get; set; } 

    public string Version { get; set; } 

    public string UserFriendlyName { get; set; } 

    public virtual Product Product { get; set; } 

    public virtual Profile LastKnownProfile { get; set; } 

    public virtual Computer Computer { get; set; } 

    public virtual ICollection<TestResult> TestResults { get; set; } 

    public virtual ICollection<Environment> Environments { get; set; } 
} 

回答

2

您需要使用Fluent API定義關係。使用這樣的事情:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Computer>() 
       .HasRequired(x => x.Instance) 
       .WithRequiredPrincipal(x => x.Computer) 
       .WillCascadeOnDelete(); 

    modelBuilder.Entity<Instance>() 
       .HasRequired(x => x.LastKnownProfile) 
       .WithRequiredPrincipal(x => x.Instance) 
       .WillCascadeOnDelete(); 

    modelBuilder.Entity<Instance>() 
       .HasMany(x => x.TestResults) 
       .WithOptional(x => x.Instance) 
       .WillCascadeOnDelete(); 
} 

這證明相當不錯的MSDN:Configuring Relationships with the Fluent API

+0

非常感謝。我已經爲該鏈接添加了書籤。 – twreid 2013-02-11 14:52:33

0

檢查多對多relationship.is關閉級聯刪除國家和手動刪除相關記錄

+0

是的,它被關閉。不過,我更關心如何將其配置爲在計算機被刪除時刪除實例。 – twreid 2013-02-08 14:49:25