環境:ASP.NET MVC3 C#
リポジトリ(セミプセド)があるとしましょう:
public interface IRepository
{
create();read();update();delete();opendb();closedb();
}
public class CarRepository : IRepository
{
private DbContext namedDbContext;
public void opendb()
{
namedDbContext = new DbContext();
}
public void closedb()
{
namedDbContext.dispose();
}
}
次に、コントローラーにリポジトリーが挿入され、次のように使用されて、データベース接続の有効期間を手動で制御します。
public class SomeController : Controller
{
private IRepository CarRepository;
public void SomeController(IRepository _carRepository)
{
CarRepository = _carRepository;
}
public ActionResult SomeAction(int CarId)
{
CarRepository.opendb();
var car = CarRepository.read(CarId);
CarRepository.closedb();
}
}
これは、リポジトリから接続を制御してコントローラーに配置するため、悪い習慣と見なされますか?依存性注入を使用することによるメモリリークが心配であり、重複する接続が開かれたり、長時間実行されて使用されたりしないようにしたいと考えています。