2012-04-17 2 views
0

Как мне сделать, чтобы вызвать уникальный SaveChanges, чтобы повлиять на все изменения во всех репозиториях, которые я использую? Должен ли я создать класс, содержащий все репозитории и метод сохранения? Каков наилучший способ сделать это?SaveChanges влияет на несколько репозиториев


Я пытаюсь это:

public ActionResult Create() 
{ 
    Product Product = new Product() { Id = 1, Name = "test", Amount = 1 }; 

    if (_productService.Insert(Product)) 
    { 
     context.SaveChanges(); 

     return View(); 
    } 

    return RedirectToAction("Index"); 
} 

Является ли это правильно?

ответ

0

Лучший способ называется единицей работы, и обычно это класс оболочки для вашего контекста EF, который передается конструктору ваших репозиториев. Вы можете позвонить Save в этот новый класс.

+0

Так что мне нужно создать экземпляр Entitie (унаследованный от DbContext), передать его в репозиторий, а затем вызвать entitie.SaveChanges? – MuriloKunze

+0

Вы не вызываете изменения сохранения вне репозитория. Репозиторий не несет ответственности за сохранение данных, это ответственность за новую оболочку контекста. –

+0

Да, я имею в виду. – MuriloKunze

0

Pass IDbContext/ObjectContext для конструктора ваших репозиториев. Работа с репозиториями и вызов Сохранить в контексте не в репозитории.

Я бы также передумал, если вам нужны репозитории вообще.

+0

Да, я вижу, что Ladislav говорит, что репозиторий не очень хорош. Мне нужны некоторые валидации перед сохранением данных. Так что, как я использую только сервисный уровень и внутри него вызываю методы IDbContext? это хорошо? – MuriloKunze

Смежные вопросы