Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
ai-zer
18 / 33 / 11
Регистрация: 09.10.2010
Сообщений: 418
Завершенные тесты: 1
#1

DbContext по умному

12.11.2015, 12:47. Просмотров 851. Ответов 5

День добрый, как правильно раскидать классы для доступа к БД. Во всех примерах DbContext всех моделей и методы для работы пихают в один контекст, типа так:
C#
1
2
3
4
5
 
public class BaseContext  :DbContext  {
        public DbSet<AccountModel> Accounts { get; set; }
        public DbSet<CategoryModel> Categories { get; set; }
}
Если декомпозировать этот класс и попытаться сделать нормальный DAL, то должно быть два класса
C#
1
2
3
public class AccountModel : DbContext {
        public DbSet<AccountModel> Accounts { get; set; }
}
C#
1
2
3
public class CategoryModel : DbContext {
        public DbSet<CategoryModel> Categories{ get; set; }
}
Но тогда как общаться с ними из Web.Config, ведь там указывают только один контекст, и это должен быть базовый? И тогда надо DbSet всех дочерних классов переместить в базовый? Это не тру... Что делать, как быть? Где нормальный пример?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2015, 12:47
Ответы с готовыми решениями:

класс DbContext
люди подскажите, занимаюсь по учебнику, почему-то класс DbContex подчеркивает...

DbContext.SaveChanges >> UpdateException
Здравствуйте. Пытаюсь записать новую запись В базу данных и спользуя...

Обновление данных через DbContext
Здравствуйте!!! Подскажите пожалуйста! Как написать обновление данных через...

DbContext и многопоточность
Как организовать работу с ДбКонтекстом из разных потоков? Когда кто-то пишет,...

DbContext disposed
Добрый вечер. Пишу сайт codefirst+unitofwork. Запускаю на дебаг, из базы...

5
off
89 / 89 / 44
Регистрация: 20.04.2008
Сообщений: 326
Завершенные тесты: 3
12.11.2015, 12:50 #2
В один
0
Metall_Version
2116 / 1253 / 516
Регистрация: 04.03.2014
Сообщений: 4,094
Завершенные тесты: 2
12.11.2015, 18:48 #3
Не важно на самом деле, исходя из потребностей, если сущности связаны то в один контекст.
Обычно на каждую бд один контекст, так как в бд сущности должны быть связаны физически и логически

Добавлено через 51 секунду
Но тогда как общаться с ними из Web.Config
просто, на каждый контекст своя конекшнстринг
0
OwenGlendower
Супер-модератор
Эксперт .NET
8863 / 7865 / 3358
Регистрация: 17.03.2014
Сообщений: 15,510
Записей в блоге: 1
12.11.2015, 21:47 #4
ai-zer, все зависит от задачи и кол-ва таблиц. Если таблиц много и они предназначены для разных несвязанных задач, то есть смысл использовать несколько контекстов.
0
ai-zer
18 / 33 / 11
Регистрация: 09.10.2010
Сообщений: 418
Завершенные тесты: 1
12.11.2015, 22:10  [ТС] #5
Metall_Version,
Цитата Сообщение от Metall_Version Посмотреть сообщение
Обычно на каждую бд один контекст
а есть ли нормальный пример такой реализации? Где функциональность раскидана по классам, но используется один контекст. У меня не получается...
Точнее получается, что контексты все в одном базовом классе, а CRIUD у каждого в своём классе. И класс одной дочерней модели видит контекст другой дочерней модели. А как правильно сделать, чтобы контекст был один, как наполнить CRUID разных моделей в один класс?

Добавлено через 4 минуты
OwenGlendower, А как правильно сделать, чтобы контекст был один, как наполнить CRUID разных моделей в один класс? В данном случае BaseContext. Или я что-то не так понимаю?

C#
1
2
3
4
5
6
7
public class BaseContext  : DbContext
    {
        public BaseContext()         : base(AppSettings.ConnectionString) {        }    
        public DbSet<AccountModel> Accounts { get; set; }
        public DbSet<CategoryModel> Categories { get; set; }
        public DbSet<ProductModel> Products { get; set; }
    }
0
OwenGlendower
Супер-модератор
Эксперт .NET
8863 / 7865 / 3358
Регистрация: 17.03.2014
Сообщений: 15,510
Записей в блоге: 1
12.11.2015, 22:18 #6
Цитата Сообщение от ai-zer Посмотреть сообщение
как наполнить CRUID разных моделей в один класс?
Я не понимаю что ты имеешь в виду
0
12.11.2015, 22:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2015, 22:18

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

Обобщенная колекция в DbContext
Подскажите как вместо DbContext.Temp.Add(item); использовать...

Вызов метода Contains() для свойста DbContext
Вновь взываю к помощи Гуру, просветите неразумного..( Итак, ситуация...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru