C# 实体框架的级联更新

C# 实体框架的级联更新,c#,entity-framework,edit,C#,Entity Framework,Edit,我想更新我的account对象,它有子AccountProfile,但我得到一个异常,说附加实体失败,因为同一类型的另一个实体已经具有相同的主键值 我想知道如何更新这些实体,尤其是AccountProfile,因为我可以从其列表中添加/删除受益人对象。是否可以执行级联更新之类的操作?或者创建一个方法来处理这些类型的实体更新 帐户类别: Public class Account(){ public int AccountID { get; set; } public string

我想更新我的account对象,它有子
AccountProfile
,但我得到一个异常,说附加实体失败,因为同一类型的另一个实体已经具有相同的主键值

我想知道如何更新这些实体,尤其是
AccountProfile
,因为我可以从其列表中添加/删除
受益人
对象。是否可以执行级联更新之类的操作?或者创建一个方法来处理这些类型的实体更新

帐户类别:

Public class Account(){
    public int AccountID { get; set; }
    public string UserName { get; set; }
    public int RoleID { get; set; }
    public int ProfileID { get; set; }
    public virtual AccountProfile Profile { get; set; }
    public virtual Role Role { get; set; }
}
AccountProfile类:

public class AccountProfile
{
    public int ProfileID { get; set; }
    public string FullName { get; set; }
    public virtual ICollection<Beneficiary> Beneficiaries { get; set; }
}
编辑方法:

   public void Edit(Account account)
    {
        _context.Entry(account).State = EntityState.Modified;
        _context.SaveChanges();           
    }

您可以重写
DbContext
类中的
SaveChanges()
方法,以对所有相关实体执行自定义级联更新。您能否提供与问题中所述重复PK值相关的异常详细信息?我在
EntityFramework.dll
中得到一个
InvalidOperationException
,说明附加X类型的实体失败。如果图中的任何实体具有冲突的键值,则使用“Attach”方法或将实体的状态设置为“Unchanged”或“Modified”时,可能会发生这种情况…可能罪魁祸首属于行
\u context.Entry(account).state=EntityState.Modified
。控制器中的某个地方可能会在您的模型类中执行物化,其中包括您试图修改的实体(最好显示调用的
Edit
方法的位置)。第一次尝试使用
\u context.Entry(account).State=EntityState.Detached
Modified
之前。
   public void Edit(Account account)
    {
        _context.Entry(account).State = EntityState.Modified;
        _context.SaveChanges();           
    }