gpt4 book ai didi

c# - 存储库模式 EF Core 更新方法

转载 作者:行者123 更新时间:2023-12-04 16:13:40 24 4
gpt4 key购买 nike

我有一个关于在带有 Entity Framework Core 的 MVC Web 应用程序中使用存储库模式和工作单元模式的问题。

我目前正在 Controller 中实现更新功能。现在,此时我不确定更新实体的最佳方法是什么。我看过一些视频,他们说像这样的存储库中不应存在 Update 方法:

public T Update(T entity)
{
DbSet.Attach(entity);
var entry = Context.Entry(entity);
entry.State = System.Data.EntityState.Modified;
}

所以这意味着我必须在 Controller 中这样做:

public IActionResult Edit(int id, [Bind("NeighbourhoodGroup,Neighbourhood,NeighbourhoodId")] Neighbourhoods neighbourhoods)
{
var neighbourhoodsFound = unitOfWork.Neighbourhoods.Get(id);
neighbourhoodsFound.Neighbourhood = neighbourhoods.Neighbourhood;
neighbourhoodsFound.NeighbourhoodGroup = neighbourhoods.NeighbourhoodGroup;
}

但是,这意味着我必须在所有 Controller 中都这样做,即使对象有很多属性?

我希望有人可以就最好的方法给我一些建议。

最佳答案

在您的存储库中,您可以拥有如此简单的更新功能:

public void Update(T entity)
{
DbSet.Attach(entity);
ApplicationContext.Entry(entity).State = EntityState.Modified;
}

在 Controller 中或从您喜欢的任何地方进行更新时,您可以最好通过 id 获取实体,修改您要在实体上修改的所有属性,从存储库中调用 Update 方法,该方法将其状态设置为修改并最终在 EF 上下文上调用 Save 或 SaveAsync 方法。您的 EF 上下文应该在您的 UnitOfWork 中公开。

有关更详细的解释,您可以查看此帖子,这将非常有帮助。 EF Repository Pattern

关于c# - 存储库模式 EF Core 更新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59153571/

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