gpt4 book ai didi

entity-framework - 附加和 EntityState.Detached

转载 作者:行者123 更新时间:2023-12-01 23:24:22 25 4
gpt4 key购买 nike

为什么在这篇文章中: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application我们在 Delete 方法中检查了 EntityState.Detached,然后在 Attach 中检查,而在 Update 方法中我们没有检查:

    public virtual void Delete(TEntity entityToDelete)
{
if (context.Entry(entityToDelete).State == EntityState.Detached)
{
dbSet.Attach(entityToDelete);
}
dbSet.Remove(entityToDelete);
}

public virtual void Update(TEntity entityToUpdate)
{
dbSet.Attach(entityToUpdate);
context.Entry(entityToUpdate).State = EntityState.Modified;
}

最佳答案

两者不同的原因是因为在教程中还有另一个调用删除的方法:

    public virtual void Delete(object id)
{
TEntity entityToDelete = dbSet.Find(id);
Delete(entityToDelete);
}

因此,如果从客户端事件调用 Delete(TEntity entityToDelete) - 它应该像在 Update 方法中一样首先附加,但如果它是作为服务器端处理的一部分从 Delete(object id) 调用的,它将已经附上。

为了安全起见:最好在进行更改之前始终检查它是否已附加,特别是:考虑到将来修订可能会发布一个可以调用的服务器方法也以同样的方式更新方法。

关于entity-framework - 附加和 EntityState.Detached,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17771662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com