Я пытаюсь протестировать действия MVC, поэтому я создал IRepository и MockRepository
public class Repository : DbContext, IRepository
{
public IDbSet<TEntity> SomeEntities { get; set; }
}
public interface IRepository : IDisposable
{
IDbSet<TEntity> SomeEntities { get; set; }
int SaveChanges();
}
С Create
и Delete
действиями это было просто, но застряло с Edit
действием:
private IRepository repository;
public ActionResult Edit(TEntity entity)
{
if (ModelState.IsValid)
{
repository.Entry(entity).State = EntityState.Modified;
repository.SaveChanges();
return RedirectToAction("Index");
}
return View(entity);
}
Итак, я вижу два способа решения этой проблемы:
должен ли я добавить в IRepository новый метод
DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class;
Как я могу это сделать?DbContext.Entry
метод возвращает очень специфический DbEntityEntry<TEntity>
тип?
или изменить способ обновления сущности?Какой рекомендуемый способ сделать это?