Понимание объектов репозитория, все ли начинают новое соединение с БД? - PullRequest
0 голосов
/ 07 ноября 2010

У меня есть База данных с моей ADO.NET Entity Data Model с моим репозиторием в одном проекте библиотеки приложений

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

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в базу данных для предотвращения множественных "плохих" событий ?

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

Спасибо.

1 Ответ

1 голос
/ 07 ноября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...