2014-10-16 2 views
1

В моем приложении MVC 5 с EF6 начали использовать интерфейсы и Ninject и столкнулись с проблемами.DataContext db = new DataContext() - как глобальный

Я вызываю несколько реализаций, чтобы получить данные, и при сохранении его сущности отключены и имеют проблемы со многими для многих и похожими.

Так что я хочу сделать свой DataContext db = new DataContext(); глобальным, поэтому я просто обращаюсь к нему, а не создаю новый экземпляр в каждом классе.

Где я объявляю это и как его называть?

+1

Это не очень хорошая идея. Если у вас возникли проблемы с отключенными объектами, вам необходимо привязать их к вашему контексту данных, прежде чем работать с ними. На ваш много-много проблем не должно влиять глобальный DataContext. – mallocation

+0

У меня его нет, я не знаю, как его достичь – HerGiz

ответ

1

Все, что вам нужно - это шаблон хранилища и единица работы. есть полезная ссылка о внедрении http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

+0

Я думаю, что это все, но мне нужно время, чтобы переварить и проверить. Будет информировать об эффекте. – HerGiz

+1

EF уже реализует сам шаблон работы и репозитория, вы должны избегать добавления излишней сложности в свой проект. Возможно, вы можете создавать сервисы/бизнес-классы http://codereview.stackexchange.com/questions/47865/database-first-entity-framework-repository-service-unitofwork-pattern – TlonXP

+0

Я немного перегружен. Я думаю, что мой проект недостаточно велик, и я просто усложнил бы еще больше. Спасибо всем за усилия. – HerGiz

3

НЕ ДЕЛАЙТЕ ЭТО.

По крайней мере потому, что из-за кэширования вы закончите, чтобы иметь всю базу данных в памяти.

Ваш DbContext ДОЛЖЕН иметь область как можно меньше. Конечно, не область применения.

«Пусть пул соединений выполняет свою работу».

Смежные вопросы