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记录。 在前提前感谢
嗨阿萨德,你是礼仪。当我提到上述行时,已经创建了一个名为“EPDUser_ID”的新列,并在此处更新了相应的用户标识。当我删除用户时,它也会删除用户安全表。 感谢您的回复。 – Karthikeyan