Я пытаюсь применить единицу рабочего шаблона, как описано в this blog, но столкнулся с следующей проблемой: если я ввешу связанный DbSet только в репо, например,Объект обновления с использованием только DbSet
public ArticleRepository(DbSet<Article> articles)
{
this.articles = articles;
}
, то как мне обновить записи или изменить их статус?
Раньше я
public void Update(Article article)
{
this.context.Entry(article).State = EntityState.Modified;
}
но с новым подходом я не имею доступа к DbContext больше. Ни DbSet.Add, ни DbSet.Attach не будут работать здесь, так как я могу обновить объект в контексте?
'IGenericRepository' должен быть полностью вашим дизайном. Вы можете добавить какой-либо метод для установки состояния для объекта. Такой интерфейс действительно выглядит как обертка. Поэтому, если возможно, попытайтесь разоблачить основную часть (DbContext, ...) через какой-либо другой скрытый интерфейс. При необходимости вы всегда можете получить доступ к ядру для выполнения некоторой *** задачи ***. В качестве обертки иногда он не может обеспечить полную работу как то, что вы можете делать с основными частями. Для меня этот шаблон основан на так называемой *** обертке ***. – Hopeless
1. Вы можете получить доступ к контексту из 'DbSet'. 2. Не вводите 'DbSet', вводите сам контекст, а затем устанавливаете' this.articles', используя контекст. 3. Знаете ли вы, почему вы вообще абстрагируете контекст? Контекст Entity Framework уже имеет встроенный механизм «Единица работы». – haim770