【发布时间】:2019-12-03 09:10:13
【问题描述】:
我有一个关于在具有 Entity Framework Core 的 MVC Web 应用程序中使用存储库模式和工作单元模式的问题。
我目前正在控制器中实现更新功能。现在,在这一点上,我不确定更新实体的最佳方法是什么。我看过一些视频,他们说 Update 方法不应该出现在这样的存储库中:
public T Update(T entity)
{
DbSet.Attach(entity);
var entry = Context.Entry(entity);
entry.State = System.Data.EntityState.Modified;
}
这意味着我必须在控制器中这样做:
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;
}
但是,这意味着我必须在所有控制器中执行此操作,即使对象有很多属性?
我希望有人能给我一些建议,告诉我最好的方法是什么。
【问题讨论】:
-
您不需要更新方法。您也不需要存储库。您正在破坏 EF Core 并尝试重新实现已经实现的内容。顺便说一句,
update方法不会更新任何内容,它只会附加一个处于修改状态的分离实体。您确实需要附加一个新实体。 -
检查No need for repositories and unit of work with Entity Framework CoreGunnar Peipman 在一篇文章中收集了这些通用存储库的所有问题
标签: c# asp.net-core-mvc entity-framework-core