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