帮帮我这个,我真的很困惑!
我只是想更新一些东西!这是我的控制器(后期行动):
[HttpPost]
public ActionResult Edit(CategoryViewModel categoryViewModel)
{
if(ModelState.IsValid)
{
_categoryService.UpdateCategory(categoryViewModel.Id);
}
return View();
}
这是我的服务类(我的问题是关于这个类,我不知道如何更新它)
public CategoryViewModel UpdateCategory(Guid categoryId)
{
var category = _unitOfWork.CategoryRepository.FindBy(categoryId);
var categoryViewModel = category.ConvertToCategoryViewModel();
_unitOfWork.CategoryRepository.Update(category);
_unitOfWork.SaveChanges();
return categoryViewModel;
}
最后我的基础知识库如下:
private readonly DbSet<T> _entitySet;
public void Update(T entity)
{
_entitySet.Attach(entity);
}
我的UnitOfWork
也就是这样:
public class UnitOfWork : IUnitOfWork
{
private IRepository<Category> _categoryRepository;
public IRepository<Category> CategoryRepository
{
get { return _categoryRepository ?? (_categoryRepository = new Repository<Category>(_statosContext)); }
}
}
答案 0 :(得分:0)
更改UpdateCategory
以接受CategoryViewModel
而不是Guid
。将实例UpdateFromViewModel(CategoryViewModel model)
方法添加到Category
对象,该对象的作用是从模型中获取属性并将它们传输到EF实体。之后,其余代码应该可以工作。还有其他模式也可用于实现此目的,但鉴于您现有的模式,这应该可以让您跨越终点。
public class Category
{
public void LoadFromModel(CategoryViewModel model)
{
// Transfer properties from model to entity here
}
}
public class CategoryService
{
public void UpdateCategory(CategoryViewModel model)
{
var category = _unitOfWork.CategoryRepository.FindBy(model.CategoryId);
category.LoadFromModel(model);
_unitOfWork.SaveChanges();
model.CategoryId = category.CategoryId;
}
}