Задача. Есть база фильмов (фильм имеет различные поля, в данном контексте не имеет значение какие). В частности, фильм имеет коллекцию жанров. То есть еще существует таблица с жанрами и таблица для связи фильма и жанра "многие ко многим".
Делаю приложение WPF. Базой рулит отдельная библиотека классов. Чтобы оградить проект UI от EF, я решил сделать отдельный класс-адаптер (вопрос первый, нужен ли он или это плохая практика?). Адаптер инстансный. В адаптере создается контекст данных. Получается, что в рамках приложения я имею один экземпляр адаптера (а значит и один экземпляр контекста данных). Вопрос второй, это нормально? Ведь если каждый раз создавать новый контекст, приложение будет очень долго думать. При таком подходе у меня возникает еще проблема с сохранением данных. Ну например я открыл 2 формы, одна для редактирования информации о фильме, другая для редактирования набора жанров. И если я в форме редактирования жанров нажму "Сохранить" (то есть отправлю команду _context.SaveChanges()), то в базу занесутся и изменения, которые я внес, редактируя фильм (они ведь сделаны в одном контексте). Вопрос третий, как правильно работать с данными, чтобы такого не происходило? И вообще я не могу придумать, как прикрутить это все по человечески на MVVM. Пока что говнокодингом занимаюсь. :( В общем то это был четвертый вопрос. Как прикрутить это все на MVVM? Ко всему прочему мне нужен постраничный вывод. Пока приходит в голову только способ context.EntitySet.Skip(a).Take(b)
. И вот тут тоже вопрос. Правильно ли это? Не будет ли такой подход вызывать запрос всех предыдущих до скипа значений, прежде чем вернуть мне нужный набор?
Чтобы оградить проект UI от EF, я решил сделать отдельный класс-адаптер Просто можно использовать класс для контекста данных.
Если каждый раз создавать новый контекст, то почти ничего не изменится. Сейчас мощности вычислительной техники хватает, что бы создавать контекст постоянно. Можно создавать глобальную переменую для контекста и использовать её.
При таком подходе у меня возникает еще проблема с сохранением данных. Ну например я открыл 2 формы, одна для редактирования информации о фильме, другая для редактирования набора жанров. И если я в форме редактирования жанров нажму "Сохранить" (то есть отправлю команду _context.SaveChanges()), то в базу занесутся и изменения, которые я внес, редактируя фильм (они ведь сделаны в одном контексте).
Проблема с сохранениями не должна быть. Имеется 2 открытых формы и разные события для сохранения информации с форм. Нужно что бы context.Таблица.Add(ДАННЫЕ); и context.SaveChanges(); были в событие нажатия кнопки "Сохранить".
context.EntitySet.Skip(a).Take(b) - при таком запросе будет создан запрос к базе данных и он вернет только нужную выборку.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть папка которая содержит ещё папки и файлы! Как получить данные из всех файлов находящихся в главной папке?
Есть такое дело - при отправке POST данных на сервр после истечения сессии - возникает данное исключениеНу или если на другой странице сделать...
Есть интранет-ресурс, написанный на PHPРаботает под управлением IIS6 (FastCGI)