我有一个方法,可以通过userId从我的用户表中删除用户:
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; }
}
在 c# 中实现实体之间的关系。例如,在用户对象上创建角色实体的集合。ORM(我猜你使用的是EntityFramework或NHibernate)将负责自动删除依赖对象。
class User {
public virtual ICollection<UserRole> UserRoles { get; set; }
}
它应该映射到尽可能多的关系。
在您的 DBContext 上,您必须添加:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany(u => u.UserRoles)
.WithOptional().WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}