我有兩個實體的用戶和角色如何刪除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; }
}
和我的數據庫只包含用戶名和角色ID具有表(RoleUser)。 我想修改用戶,刪除角色用戶表中存在的行並插入新記錄。 當我用這下面的代碼它刪除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表,沒有刪除實體本身插入新記錄?
檢查你的數據庫模型。如果其中一個外鍵被刪除(這裏是User),則連接表(RoleUser)應該級聯刪除。然後,您只需要在您的代碼中刪除用戶,並且數據庫將負責角色用戶 – Mats391
ASP.NET與Entity Framework完全無關。 ASP.NET(和MVC)是Web框架,EF是一個ORM。如果你使用ASP.NET術語尋找EF答案,你將無法找到你想要的東西 –