Использование DbContext и базы данных впервые в EF 4.1 - PullRequest
2 голосов
/ 13 февраля 2012

Я начал работать над новым проектом и переключаюсь с LinqToSQL на EF 4.1 в качестве ORM.

У меня уже есть настроенная база данных, и я собираюсь использовать базу данных в первую очередь. По умолчанию EF генерирует контекст, который расширяет ObjectContext. Я хотел знать, будет ли хорошим подход заменить его на DbContext.

Большинство доступных примеров имеют дело только с Code First и DbContext, но DBContext можно использовать и с Database First. Есть ли какие-либо преимущества, которые я получаю, используя DBContext? Из того, что я прочитал, DBContext является упрощенной версией ObjectContext и облегчает работу с ним. Есть ли другие преимущества или недостатки?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Вы ничего не замените вручную.Вам понадобится Генератор DbContext T4, доступный в галерее VS.Не прикасайтесь к автоматически сгенерированным файлам - ваши изменения будут потеряны при каждом изменении файла EDMX.

Я ответил аналогичный вопрос в прошлом году.Теперь мой ответ в основном - для новых пользователей API DbContext, вероятно, лучше.DbContext API упрощен - как с точки зрения использования, так и с точки зрения возможностей, но вы все равно можете получить ObjectContext из DbContext и использовать функции, доступные только в ObjectContext API.С другой стороны, DbContext API имеет дополнительное влияние на производительность и дополнительный уровень ошибок.В простом проекте вы, вероятно, не найдете никаких недостатков в DbContext API - вы не увидите влияния на производительность, вы не будете использовать угловые функции, доступные только в ObjectContext, и на вас не будут влиять случайные ошибки.

МногоеИнформация и сообщения в блоге были собраны с момента выпуска DbContext API, поэтому вам не нужно бояться, что вы не найдете описание API.Кроме того, команда ADO.NET теперь использует DbContext API в качестве флагманского корабля.

Я не большой поклонник DbContext API, но мое мнение не связано с его функциональностью, а с его существованием - в этом нет необходимостидва API и разделенные возможности разработки команды ADO.NET для поддержки и исправления двух API, делающих то же самое.Это означает лишь то, что возможностей для реализации действительно новых функций меньше.

1 голос
/ 13 февраля 2012

Я использую его сейчас с Oracle для добавления в существующее приложение.Упрощение, на которое ссылается Ладислав, хорошо работает для меня в этом проекте, так как у меня мало времени и ресурсов.Я не нашел никаких ошибок, если вы придерживаетесь простых операций CRUD и менее чем ~ 150 таблиц.

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

...