Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Общие понятия производительность используя EntityFramework / 4 сообщений из 4, страница 1 из 1
30.10.2014, 22:39
    #38792320
AspUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общие понятия производительность используя EntityFramework
Добрый день! Использую 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
30.10.2014, 22:48
    #38792327
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общие понятия производительность используя EntityFramework
AspUserа) Это что создается новое соединение к sql серверу ?
б) Не может же (не будет же) система создавать количество соединений равное веб-пользователям находящимся на странице ?
в) Правильно ли использовать пользовательские контролы внутри которых есть свои Repository repo = new Repository(); ?
г) Может можно не парится и плодить(разумно) new Repository() с надежной что sql и asp.net все оптимально сами отработают ?

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

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

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

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


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