使用PK删除表行,在其他表中使用其中的行作为外键

时间:2015-06-16 15:27:08

标签: c# mysql asp.net-mvc

我有一个方法可以通过userId从我的Users表中删除用户:

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; }
    }

主键userId还用作userroles表中的外键,其中包含UserRoleId(PK),UserId(FK)和RoleId(FK)。我不确定如何用一种方法敲除两个表中的两行。

提前致谢!

以下是确切的属性:

{{1}}

1 个答案:

答案 0 :(得分:1)

在c#中实现实体之间的关系。例如,在User对象上创建Roles实体的集合。 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);
    }