powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Общие понятия производительность используя EntityFramework
4 сообщений из 4, страница 1 из 1
Общие понятия производительность используя EntityFramework
    #38792320
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Использую WebForms, sql-2012, studio-2013. Если не трудно подскажите как используются ресурсы если я делаю в общих чертах приблизительно так:

класс соединения c БД
Код: c#
1.
2.
3.
4.
5.
public class Boks34ConnectionString : DbContext
    {
        public DbSet<CategoryNews> CategoriesNews { get; set; }
        public DbSet<OneNews> News { get; set; }
    }



класс репозитария в котором использую этот контекст
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public class Repository
    {
        private Boks34ConnectionString context = new Boks34ConnectionString();

        public IEnumerable<CategoryNews> CategoriesNews
        {
            get { return context.CategoriesNews; }
        }
        public IEnumerable<OneNews> News
        {
            get { return context.News; }
        }
    }


потом в страницах использую
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public partial class refNews : System.Web.UI.Page
    {
        Repository repo = new Repository();

        public void UpdateNews(int? Id)
        {
            OneNews myRe = repo.News.Where(p => p.Id == Id).FirstOrDefault();
        }
    }


Вот тут возникает ряд теоретических вопросов к Repository repo = new Repository();
а) Это что создается новое соединение к sql серверу ?
б) Не может же (не будет же) система создавать количество соединений равное веб-пользователям находящимся на странице ?
в) Правильно ли использовать пользовательские контролы внутри которых есть свои Repository repo = new Repository(); ?
г) Может можно не парится и плодить(разумно) new Repository() с надежной что sql и asp.net все оптимально сами отработают ?
...
Рейтинг: 0 / 0
Общие понятия производительность используя EntityFramework
    #38792327
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AspUserа) Это что создается новое соединение к sql серверу ?
б) Не может же (не будет же) система создавать количество соединений равное веб-пользователям находящимся на странице ?
в) Правильно ли использовать пользовательские контролы внутри которых есть свои Repository repo = new Repository(); ?
г) Может можно не парится и плодить(разумно) new Repository() с надежной что sql и asp.net все оптимально сами отработают ?

Один Repository на всё время обработки одного запроса.

Можно и не париться, если пользоваться этим приложеним мало кто будет.
...
Рейтинг: 0 / 0
Общие понятия производительность используя EntityFramework
    #38792425
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ответы:
а) "да"
б) "нет"
г) "правильно", но при этом репозитории должны быть "правильными"
д) "нет", ибо утечка памяти доканает тебя если раньше не доканает процесс синхронизации между разными DbContext'ами в разных репозиториях.

комментарии и рекомендации:
Существует пара вариантов решения вопроса.
1) использовать паттерн "Unit of work", который призван "оьъединить в себе все репозитории шаря между ними один экземпляр DbContext. Реализацию придется писать соственноручно. Хотя есть полезные мелочи по решению этой части вопроса:
a) nugget-package UnitOfWork for MVC5
б) пример использования пакета

2) можно использовать DI-container (Dependency Injection). Тогда можно реализовать принцип "Unit of Work" средствами самого контейнера (например, контейнер Autofac или UnityContainer. Использование контейнера предпочтительнее (ИМХО), потому что львиную долю кода по реализации уже написал добрые дядьки.
...
Рейтинг: 0 / 0
Общие понятия производительность используя EntityFramework
    #38792426
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Общие понятия производительность используя EntityFramework
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]