コレクションからエンティティを削除してから永続化すると、次のエラーが発生します。関係が削除されたときにエンティティを削除するように関係を設定する必要があることは理解していますが、Google や SO で検索しても、何をする必要があるのか正確にわかりません。
1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。
Role、Permission、および RolePermission の 3 つのテーブルがあります。RolePermission を Role から削除しようとしています。
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 で実際に削除を実行するには、何を設定する必要がありますか?