2015-04-17 28 views
1

我有一個實體像下面,實體框架級聯中的一個零或一對一的關係

class User 
    { 
     public int Id {get;set;} 
     public string Name {get;set;} 

     public int? UserSecurityId {get;set;} 
     public virtual UserSecurity UserSecurity {get;set;} 

    } 

class UserSecurity 
{ 
    public int Id {get;set;} 

    public int? AdminRoleId{get;set;} 
    public virtual Admin AdminRole {get;set;} 

    public int? ApproverRoleId {get;set;} 
    public virtual TaskApprover ApproverRole {get;set;} 
} 

class Admin 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
} 

class TaskApprover 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
} 

我使用使用實體框架6.1.3 我需要刪除UserSecurity記錄,當我刪除用戶的用戶表。

gooling之後,我發現了一些這樣的事,

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      //// Cascade delete, The foreign key table records will be removed when its parent deleted. 
      modelBuilder.Entity<EPDUser>().HasOptional(x => x.UserSecurity).WithOptionalDependent().WillCascadeOnDelete(true); 
      modelBuilder.Entity<EPDUserSecurity>().HasOptional(x => x.AdminRole).WithOptionalDependent().WillCascadeOnDelete(true); 
      modelBuilder.Entity<EPDUserSecurity>().HasOptional(x => x.ApproverRole).WithOptionalDependent().WillCascadeOnDelete(true); 
      base.OnModelCreating(modelBuilder); 
     } 

而且我的倉庫代碼刪除用戶低於,

protected override void OnDelete(int id) 
      { 

       var user = EntitySet.Include(x=>x.UserSecurity).FirstOrDefault(x => x.ID == id); 
       EntitySet.Remove(user); 
       DbContext.Entry(user).State = EntityState.Deleted; 
      } 

保存更改後,用戶記錄只得到刪除不是用戶安全記錄。

Kinldy在刪除用戶時幫我刪除UserSecurity記錄。 在前提前感謝

回答

2

您正在配置您的EPDUser爲關係中的依賴實體。所以一個EPDUser有一個EPDSecurity的外鍵,如果你刪除了相關的EPDSecurity,它將被刪除,但不是相反。你想要做的是使用WithOptionalPrincipal,其中設置實體被配置爲關係中的主體:

modelBuilder.Entity<EPDUser>() 
    .HasOptional(x => x.UserSecurity) 
    .WithOptionalPrincipal() 
    .WillCascadeOnDelete(true); 
+0

嗨阿薩德,你是禮儀。當我提到上述行時,已經創建了一個名爲「EPDUser_ID」的新列,並在此處更新了相應的用戶標識。當我刪除用戶時,它也會刪除用戶安全表。 感謝您的回覆。 – Karthikeyan

相關問題