2013-07-02 2 views
0

Это хорошая практика для этого?Хорошая практика передать dbcontext функции?

в действии контроллера

ValidateSomEntity(icontext, someid) 
icontext.SaveChanges(); 

public ValidateSomEntity(IContext db_, int someid) 
{ 
    db_.SomEntity.FirstOrDefault(c=>c.Id == someid); 
    // do validate 
} 

или лучше сделать это в действии контроллера

ValidateSomEntity(someid) 
    icontext.SaveChanges(); 

    public ValidateSomEntity(int someid) 
    { 
     usgin(var db_ = new SomeDbContext()) 
     { 
      db_.SomEntity.FirstOrDefault(c=>c.Id == someid); 
      //do validate 
     } 
    } 

моя проблема в том, что Icontext является интерфейс DbContext и в контроллере построен ninject, поэтому я не знаю, будет ли это проблемой при создании модульного теста для функции или контроллера

ответ

0

Если вы используете IOC контейнером, рекомендуемый подход заключается в том, чтобы вставить IContext в ваш конструктор contoller по запросу Http, тогда вы можете использовать его в любой функции. Я бы не рекомендовал передавать контекст в вашу функцию.

+0

Да, я делаю это, и как я могу, когда я тестирую приложение с модульным тестом, передаем поддельный контекст функции? Я не понимаю, как можно добиться этого –

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