2016-08-02 40 views
0

我有以下類和EF慣例創建的表 - 罰款 - 都很好。現在我想在ToDoList上配置級聯刪除(這樣,當我刪除一個ToDoList時,所有ToDoItems和UserToDoLists也會自動刪除)。我必須重新指定EF約定能夠檢測到以設置WillCascadeOnDelete的內容嗎?我如何在流利的API中指定這種關係?如何配置與EF Fluent API級聯刪除

public class ToDoList 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
    public virtual ICollection<ToDoItem> ToDoItems { get; set; } 
    public virtual ICollection<UserToDoList> UserToDoLists { get; set; } 
} 

public class ApplicationUser : IdentityUser 
{ 
    public ApplicationUser() 
     : base() 
    { 
    } 

    public virtual ICollection<UserToDoList> UserToDoLists { get; set; } 
} 

// a todolist can have many users and a user can have many todolist 
// junction table will have addition fields 
public class UserToDoList 
{ 
    public string UserId { get; set; } 
    public virtual ApplicationUser User { get; set; } 

    public virtual int ToDoListId { get; set; } 
    public virtual ToDoList ToDoList { get; set; } 

    // additional fields 
    public bool IsOwner { get; set; } 
    public int Ordinal { get; set; } 
    public bool AllowEdit { get; set; } 
} 

public class UserToDoListConfig : EntityTypeConfiguration<UserToDoList> 
{ 
    public UserToDoListConfig() 
    { 
     HasKey(ut => new { ut.UserId, ut.ToDoListId }); 
    } 
} 

public class ToDoListConfig : EntityTypeConfiguration<ToDoList> 
{ 
    public ToDoListConfig() 
    { 
     Property(t => t.Description).IsRequired().HasMaxLength(50); 

     HasMany(t =>t.UserToDoLists).?? 
    } 
} 
+0

[實體框架(EF)代碼第一個級聯刪除的一對零或一個關係]的可能的副本](http://stackoverflow.com/questions/17487577/entity-framework-ef-code-first -cascade-delete-for-one-to-zero-or-one-relations) – Kahbazi

+0

級聯刪除應該是像你一樣的「一對多」關係的默認行爲。你檢查了生成的表/外鍵嗎? –

+0

我是一個多對多的關係 – lee23

回答

0

這是從ToDoList你結表UserToDoList一個簡單的一對多的關係,所以你只需要建立這樣的映射

HasMany(m => m.UserToDoLists) 
    .WithRequired(m => m.ToDoList) 
    .HasForeignKey(m => m.ToDoListId); 

和EF將處理您的級聯自動刪除,因爲ToDoList在交界處一側是必需的。

+0

謝謝,這個問題也是我犯了從ApplicationUser.UserToDoLists而不是DbContext.ToDoLists中刪除的錯誤。 – lee23