当我从集合中删除实体然后将其保留回来时,我收到以下错误。我知道我需要设置我的关系以在删除关系时删除实体,但是尽管通过 Google 和 SO 进行搜索,但我无法准确确定需要做什么。
无法更改关系,因为一个或多个外键属性不可为空。
我有三个表:角色、权限和角色权限。我正在尝试从角色中删除 RolePermission。
public RoleMap()
{
HasKey(t => t.Id);
ToTable("Role");
Property(t => t.RoleName).HasColumnName("RoleName");
HasMany(t => t.RolePermissions).WithRequired(t => t.Role).HasForeignKey(t => t.RoleId);
}
public PermissionMap()
{
HasKey(t => t.Id);
ToTable("Permission");
Property(t => t.ApplicationId).HasColumnName("ApplicationId");
Property(t => t.PermissionName).HasColumnName("PermissionName");
Property(t => t.IsActive).HasColumnName("IsActive");
HasRequired(t => t.Application).WithMany(t => t.Permissions).HasForeignKey(t => t.ApplicationId);
}
public RolePermissionMap()
{
HasKey(t => t.Id);
ToTable("RolePermission");
Property(t => t.PermissionId).HasColumnName("PermissionId");
Property(t => t.RoleId).HasColumnName("RoleId");
HasRequired(t => t.Permission).WithMany(t => t.RolePermissions).HasForeignKey(t => t.PermissionId);
HasRequired(t => t.Role).WithMany(t => t.RolePermissions).HasForeignKey(t => t.RoleId);
}
要删除的代码如下所示(所有内容都附加到 DBContext):
foreach (RolePermission rolePermission in permissionsToRemove)
{
role.RolePermissions.Remove(rolePermission);
}
//call commit/saveChanges here
为了让 Remove 真正导致删除,我需要设置什么?