2010-11-07 4 views
0

У меня есть базы данных, что есть мой ADO.NET Entity Data Model, что у меня Repository в проекте одна библиотека приложенийОбщие сведения о объектах хранилища, все ли запустить новое соединение с БД?

затем, на веб-сайте для каждого контроллера я начинаю с

MyRepository db = new MyRepository(); 

Я ожидаю, что этот сайт будет доступен 50.000 в день, и мне было интересно ... запустилась новое подключение к new MyRepository() части База данных?

это безопаснее?

public class MyController : Controller 
{ 
    public MyRepository db { get; set; } 

    protected override void Initialize(RequestContext requestContext) 
    { 
     if (db == null) { db = new MyRepository(); } 

     base.Initialize(requestContext); 
    } 
    ... 

Как я могу узнать немного больше о том, как делает Entity Model подключает в базу данных для предотвратить несколько «плохие» вещи происходят?

У меня есть несколько объектов, которые я бы нужно кэшировать его, так как они довольно сложны и никогда не изменится (если кто-то на админку не меняет его), , что мои лучшие варианты?

спасибо.

ответ

1

ADO.NET использует connection pool, который избегает создания подключений к базе данных каждый раз. Пул соединений создается для каждого домена приложения и для каждой строки подключения, а соединения из этого пула повторно используются. Поэтому, когда вы создаете экземпляр своего репозитория, соединение с базой данных не создается. Для кэширования объектов вы можете взглянуть на standard techniques.

Что касается вашего примера, то если MyRepository является одноразовым, рекомендуется называть метод Dispose, который может быть выполнен в методе контроллера Dispose.

+0

Должен ли я наследовать интерфейс IDisposable на MyRepository? Или я могу просто использовать его как обычный объект ('public class MyRepository {}')? – balexandre

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