2012-05-07 17 views
4

ПРЕДПОСЫЛКИ Я использую VS 2010 на машине, на которой я установил .Net 4.5, который я прочитал, была установлена ​​на месте (переопределить версию .net 4.0).EF 5.0 Перечисления без генерации

У меня есть проекты, которые по-прежнему нацелены на версию 4.0 и 4.5, недоступны, но было сказано, что все нормально, поскольку 4.5 была установлена ​​на месте. Затем я установил EntityFramework -pre через nuget и уведомления, когда я запускал команды Upgrade-Database -Script, он не генерировал бы свойства enum.

Я тогда нашел this. Я попытался сделать все с нуля, но он все еще добавлял EntityFramework 4.4 вместо 5.0. Поэтому я вручную изменил все ссылки, чтобы указать на версию 5.0, чтобы убедиться, что у меня версия EF 5.0. Все скомпилировано.

ПРОБЛЕМА Когда я бегу

Enable-Migrations -EnableAutomaticMigrations 

я получаю «Нет классов, вытекающие из DbContext не найдено в текущем проекте. Редактировать сгенерированный класс Configuration, чтобы задать контекст для включения миграции для.»

так я вручную убедился, что мой класс правильно, как в:

internal sealed class Configuration : DbMigrationsConfiguration<DataContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
    } 

Подклассы DataContext DbContext.

Когда я бег

Update-Database -Script 

Я получаю "Отсутствует типа конфигурации миграции не был найден в сборке„MyProject“. (В Visual Studio можно использовать команду Enable-миграции из Package Manager Console, чтобы добавить миграция)

У MyProject есть класс конфигурации, о котором я упоминал выше, и в консоли диспетчера пакетов. Я выбираю правую раскрывающуюся папку для моего проекта, содержащего папку Migrations и этот класс конфигурации.

ВОПРОС

  1. Что делать, чтобы убедиться, что при установке EnittyFramework через NuGet, что он добавляет версии 5.0, а не 4.4, хотя я .Net 4.5 установлен?

  2. Если я не могу ничего сделать, связанный с указанным выше вопросом, что я могу сделать, чтобы убедиться, что Upgrade-Database выплюнул скрипт?

ответ

7

Entity Framework 5.0 еще не выпущен. Есть prereleases, но для того, чтобы NuGet отображал их, вам нужно специально включить предварительные версии.

Однако имейте в виду, что EF 5.0 не поддерживает все в .NET 4.0, что будет в .NET 4.5. Да, .NET 4.5 перезаписывает .NET 4.0, но если ваш проект находится в VS2010, он будет настроен для создания .NET 4.0, а не .NET 4.5. Он не может предполагать возможности .NET 4.5, потому что результат должен выполняться в системах, которые не имеют .NET 4.5. В конце концов, вы ориентируетесь на .NET 4.0, а поддержка enum отсутствует в DLL EntityFramework, которую вы получаете из NuGet, это в DLL System.Data.Entity, которая является частью.NET, поэтому его нельзя добавить в .NET 4.0. Вы можете установить Visual Studio Beta для создания приложений, предназначенных для .NET 4.5.

Вкратце: «было сказано, что все нормально, поскольку 4.5 была установлена ​​на месте» - нет, это не подходит для ваших целей.

+0

Цените комментарий. Я следил за сообщением Скотта Ханельмана о переустановке .net framework до 4.5, используя . Вы говорите, что я должен перейти на VS 11? – TimJohnson

+0

@gsogoly Да, .NET 4.5 не поддерживается в VS 2010. Установка 'targetFramework =" 4.5 "' в веб-приложении означает, что разработанное .NET 4.0 приложение будет работать на .NET 4.5, но оно остается .NET 4.0 -разработанное приложение, и вы фактически не получаете каких-либо преимуществ .NET 4.5 (за исключением возможных исправлений ошибок в существующих методах). – hvd

+0

Dang it, у меня 32-разрядная версия Win2k8 R2 и VS11 терпит неудачу, потому что она не 64-разрядная. На самом деле нет другого способа нацелиться на .net 4.5 на VS 10? – TimJohnson