Entity framework 将dbcontext传递给函数是一种很好的做法?

Entity framework 将dbcontext传递给函数是一种很好的做法?,entity-framework,entity-framework-5,Entity Framework,Entity Framework 5,这是一个很好的做法吗 控制器动作中 ValidateSomEntity(icontext, someid) icontext.SaveChanges(); public ValidateSomEntity(IContext db_, int someid) { db_.SomEntity.FirstOrDefault(c=>c.Id == someid); // do validate } ValidateSomEntity(someid) icontext.Sa

这是一个很好的做法吗

控制器动作中

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
       }
    }
还是这样做更好 控制器动作中

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的接口,控制器中的Icontext是由ninject构建的,因此我不知道在为函数或控制器创建单元测试时是否会出现问题如果您使用IOC容器,建议的方法是根据Http请求将Icontext注入您的contoller构造函数中,然后你可以在任何函数中使用它。我不建议将上下文传递到函数中。

是的,我会这样做,当我使用单元测试测试应用程序时,如何将假上下文传递到函数中?我不明白怎样才能做到这一点