は、私は2人のエンティティのユーザーとロールエンティティを削除せずにEFのMany to Manyテーブルのレコードを削除するにはどうすればいいですか?
public partial class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string SecondName { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public partial class Role
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
}
を持っていると私は、データベース内のテーブル(RoleUser)を持っている唯一のユーザーIDおよびロールIDが含まれています。 ユーザーを変更するには、RoleUserテーブルに存在する行を削除して新しいレコードを挿入します。
public void Update(User usr)
{
var existingParent = _context.Users
.Where(p => p.Id == usr.Id)
.Include(p => p.Roles)
.SingleOrDefault();
if (existingParent != null)
{
// Update parent
_context.Entry(existingParent).CurrentValues.SetValues(usr);
// Delete children
foreach (var existingChild in existingParent.Roles.ToList())
{
if (!usr.Roles.Any(c => c.Id == existingChild.Id))
_context.Roles.Remove(existingChild);
}
}
}
を私はこの次のコードを使用する場合 それはRoleUser表の行を削除しても、役割自体
質問はRoleUser表に存在するレコードを削除し、エンティティ自体を削除せずに新しいレコードを挿入する方法です??
データベースモデルをチェックしてください。外部キーの1つが削除された場合(ここではUser)、結合テーブル(RoleUser)がカスケード削除されている必要があります。次に、コード内のUserを削除するだけで、データベースはRoleUser – Mats391
を処理します。ASP.NETはEntity Frameworkと完全に無関係です。 ASP.NET(およびMVC)はWebフレームワークであり、EFはORMです。あなたはASP.NET用語を使ってEFの答えを探すなら、あなたが望むものを見つけられないでしょう –