私はangularjsプロジェクトでasp.net web apiを開発しています。私のプロジェクトは実際にハイブリッド粒度認証です。私のプロジェクトにはいくつかのテーブルがありますが、挿入に問題が生じるテーブルは3つしかありません。 3つのテーブルは、AspNetRoles、RolePermission、およびRolesです。そして、彼らの関係は次のとおりです。LINQを使用してasp.netの多対多リレーションにデータを挿入できません
役割テーブル内の3つの役割があります。従業員、マネージャー、管理者管理者がロール権限を変更すると、古いロール権限が削除され、新しい権限がAspNetRolesテーブルに挿入されます。ただし、この操作を実行するとエラーが発生します。エラーは次のとおりです。
PRIMARY KEY制約 'PK_dbo.AspNetRoles'に違反しています。オブジェクト 'dbo.AspNetRoles'に重複キーを挿入できません。重複キー値が(dbc1ae5c-a8a7-4aa9-b62e-0948e6e2856c)
マイコードが許可
public void SaveUpdateRolePermission(RoleWisePermission rolePermissionList)
{
var RoleObject = db.Roles.Where(s => s.Id == rolePermissionList.RoleId).FirstOrDefault();
if (RoleObject.AspNetRoles.Any())
{
foreach (var rolePermission in RoleObject.AspNetRoles.ToList())
{
RoleObject.AspNetRoles.Remove(rolePermission);
db.SaveChanges();
}
}
foreach (AspNetRoles Role in rolePermissionList.PermissionList.Distinct())
{
RoleObject.AspNetRoles.Add(Role);
}
db.SaveChanges();
db.Dispose();
} public class RoleWisePermission
{
public List<AspNetRoles> PermissionList { get; set; }
public System.Guid RoleId { get; set; }
}
を削除し、更新することですされている場合db.saveChanges()の問題が発生します。この問題を解決するのを手伝ってください。
RoleIdに関連するすべてのAspNetRolesを既に削除しました。したがって、アリアイテムを複製する機会はありません。また、ロールパーミッションテーブルにデータがなくても問題が発生していることを忘れないでください。また、rolePermissionList.PermissionListの別個の項目もチェックします。そして、特定のRole IDのRoleオブジェクトからデータを削除し、Trueを返すRole PermissionテーブルにAspNetRolesがあることを確認します。ロールパーミッションテーブルにデータがない場合はどうすれば可能ですか?この問題を解決するのを手伝ってください。