我有一个方法可以通过userId从我的Users表中删除用户:
public void DeleteUser(int id)
{
User delObj = (Users.Where(u => u.UserId == id)).Single();
Users.Remove(delObj);
SaveChanges();
}
主键userId还用作userroles表中的外键,其中包含UserRoleId(PK),UserId(FK)和RoleId(FK)。我不确定如何用一种方法敲除两个表中的两行。
以下是确切的属性:
public class User
{
[Key]
public int UserId { get; set; }
public string UserName { get; set; }
public virtual ICollection<UserRole> UserRoles { get; set; }
}
public class UserRole
{
[Key]
public int UserRoleId { get; set; }
public int UserId { get; set; }
public short RoleId { get; set; }
public virtual Role Role { get; set; }
}
我将此添加到我的DbContext中,但仍然无效:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany(u => u.UserRoles)
.WithOptional().WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
仍然会出现外部约束错误。
答案 0 :(得分:0)
您需要配置UserRole实体:
modelBuilder.Entity<UserRole>().HasForeignKey(r => r.UserId).WillCascadeOnDelete(true);
答案 1 :(得分:0)
我在删除userobject之前添加了这个工作:
master