2012-05-24 5 views
2

У нас есть приложение ASP.Net, которое было создано с использованием Entity Framework 4.0, входящего в состав .Net 4.0. После прочтения ряда статей о новых функциях и, самое главное, более чистого SQL, созданного в 4.1, 4.2 и 4.3, мы решили воспользоваться возможностью для обновления нашего приложения для использования 4.3.1.Как обновить приложение C# с помощью EntityFramework 4.0 до 4.3.1

Я использовал NuGet для установки 4.3.1 в приложение, и ему удалось установить EntityFramework.dll; он добавил ссылку на него, и, когда я создаю, он добавляется в папку bin. Во время выполнения все проходит отлично, но, глядя в профилировщик SQL и используя Profit Framework Profiler от Hibernatine Rhinos, SQL кажется идентичным.

Как единственное, что NuGet сделал, это добавить ссылку, я полагаю, что мне нужно сделать что-то еще, чтобы заставить приложение использовать 4.3.1 во время выполнения, но я не могу узнать, что я должен делать.

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

Нужно ли добавить что-то еще в файл web.config для обеспечения использования 4.3.1 или того, что я сделал достаточно? Разумеется, мне нужно что-то изменить, чтобы получить такие вещи, как System.Data.Entity, из новой библиотеки EntityFramework.dll, а не из стандартных библиотек .Net4.0.

Любая помощь с благодарностью получена. Ste

ответ

2

Чтобы сделать EF4.3.1 доступным, вы должны сначала установить EF4.1 update1 и использовать новейший NuGet.

EF4.0 является база данных первой или модель первым, если вы хотите обновить EF4.3, самый простой способ заключается в использовании «Code Generator»: http://blogs.msdn.com/b/adonet/archive/2011/09/28/ef-4-2-model-amp-database-first-walkthrough.aspx

+0

Спасибо за быстрый ответ. Установка EF4.1 - это то, что я не знал, что мне нужно было сделать - никаких указаний относительно этого в любом месте 4.3.1 не было. Теперь я его установил. Тем не менее, я все равно хотел бы знать, как доказать, что новая версия установлена ​​и генерирует SQL-запросы. – stfinch

6

Это повторение meetjaydeep's ответа со ступеньками. Кредит ему и dpblog, откуда я получил большинство этой информации.

Установите EF 4.3.1, как описано here.

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

  1. Установите NuGet, если он еще не установлен.
  2. Откройте NuGet Package Manager Console (VS2010 Строка меню> Инструменты> Библиотека Package Manager)
  3. После завершения загрузки выполнить эту команду, убедитесь, что выбран правильный проект из выпадающего списка перед нажатием Enter: Install-Package EntityFramework -Version 4.3.1

Обновление EF 4.0 до EF 4.3.1, как описано here (я просто перейду к шагу 4).

Обновление с EF 4.0 EF 4.3.1
Слово предостережения - только потому, что вы установили EF 4.3.1, безусловно, не означает, что вы закончили. То, что вы только что сделали, просто дайте себе возможность использовать новые шаблоны (из того, что я видел после этого сам).Теперь пришло время использовать эти новые шаблоны.

  1. Открой свой вид дизайна EDMX.
  2. На поверхности дизайна; Щелкните правой кнопкой мыши> Добавить Code Generation Пункт
  3. Выберите «Интернет» Шаблоны меню слева
  4. Поиск «DbContext»
  5. Выберите «EF 4.x DbContext Generator» из списка
  6. Назовите этот элемент отличается от имя вашего EDMX. «_____Model.tt» (заполните пробел). Я использовал ___DBCModel.tt - Пример: FooDBCModel.tt
  7. Нажмите кнопку «Добавить»
  8. Убедитесь, что два файла были созданы: FooDBCModel.tt и FooDBCModel.Context.tt, например.

Крепление Вашего Теперь слегка раздробленный Код
Ваш код не будет компилироваться сейчас - не отчаивайтесь - это потому, что вы только что сделали это выгрузить System.Data.Objects.ObjectContext для нового и усовершенствованного (ну для меня во всяком случае) System.Data.Entity.DbContext (Yaaaaay ...)

  • Вам нужно обновить все КЕД (Create, Update, Delete) методы.
  • Вместо использования context.AddToEntityNameHere (...) использовать context.EntityNameHere.Add (...)
  • Пример: context.AddToProducts (продукт)> context.Products.Add (продукт)
  • вас прямо сейчас имеют доступ к свойству Database
  • Теперь у вас есть доступ к методу Entry (...).
  • Теперь вы можете явно указать, какие свойства обновлять во время обновления (context.SaveChanges()). Заинтересовались? Посмотрите here.

Это, по моему мнению, стоит дополнительной работы. EF 4.0 был слишком ограничен для того, что было. EF 4.3.1 более гибкий, и мне нравится синтаксический сахар, который был предоставлен. Я уверен, что EF 5.0 еще приятнее, но я не могу совершить прыжок прямо сейчас.

Наслаждайтесь.

+0

Очень хорошо описанные шаги, но для этого требуется еще одна предосторожность U, т.е. во втором абзаце «Обновление с EF 4.0 до EF 4.3.1» после первого шага. Дважды щелкните файл .edmx. Выберите модель концептуальной сущности и в В окне свойств установите значение «Стратегия генерации кода» на «Нет». Если U пропустит этот шаг, код не будет компилироваться и жаловаться на дублирование Entity Classess – Vipresh

+1

Странно, у меня никогда не было этой проблемы. Спасибо, что указали на это, хотя это и не приходило мне в голову. Я взглянул на свой проект, и у меня появилось ощущение, что оно может быть изменено автоматически, потому что оно уже установлено «none». Это что-то для меня. – dyslexicanaboko