Как разрешить предупреждение: элемент «entityFramework» имеет неверный дочерний элемент «поставщики». Список ожидаемых элементов: «контексты»

ef-code-first entity-framework entity-framework-6 visual-studio-2012

Вопрос

Я играю с EF разными рабочими процессами. Вчера я сделал новый проект, и Entity Framework 6 было первым предложением от Nuget поэтому я решил попробовать, также это очень маленький проект полностью для учебных целей, поэтому я думаю, что будет хороший опыт попробовать EF 6 так как я мы работали в основном с Ef 5 .

Мое приложение основано на подходе Code First . Структура решения показана на экране печати:

Дерево решений

Проект CodeFirstClasses предназначен для хранения моих Entites. Для простоты и потому, что я следую руководству, я использую только один класс, как вы можете видеть - Customer.cs . Там у меня есть:

public class RewardContext : DbContext
    { 
        //Specify the name of the base as Rewards
        public RewardContext() : base("Rewards")
        { 
        }

        //Create a database set for each data item
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<Customer> Customers { get; set; }

    }

И другие классы - Purchase и Customer которые тривиальны, поэтому я не буду вставлять их здесь.

Другой проект, который вы видите, - это проект Windows Forms с одной формой и кнопкой на нем. На click случае кнопки я вся логика для добавления новых записей в мои два субъектов HARDCODED. Вот лишь часть его:

public class RewardContext : DbContext
    { 
        //Specify the name of the base as Rewards
        public RewardContext() : base("Rewards")
        { 
        }

        //Create a database set for each data item
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<Customer> Customers { get; set; }

    }

Пока что ничем не отличается от того, с чем я привык с EF 5 . Я могу построить проект, я могу запустить его, и все выполняется, как ожидалось. Однако я получаю это предупреждение от названия:

Warning 1 The element 'entityFramework' has invalid child element 'providers'. List of possible elements expected: 'contexts'. И хотя я использую в основном MS SQL Server Management Studio я заметил, что я не могу управлять своими подключениями / базами данных из IDE - Visual Studio 2012 , но это не было проблемой с EF 5 .

Мое исследование сузило возможный источник проблемы / решения для ручного изменения файла App.config , но это область, где у меня не было большого опыта, особенно когда среда ID позаботилась об этом до EF 6 . Поэтому я отправлю оба файла App.config для этого решения:

Один из проекта CodeFirstClasses :

public class RewardContext : DbContext
    { 
        //Specify the name of the base as Rewards
        public RewardContext() : base("Rewards")
        { 
        }

        //Create a database set for each data item
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<Customer> Customers { get; set; }

    }

И из моего проекта TestCodeFirst :

public class RewardContext : DbContext
    { 
        //Specify the name of the base as Rewards
        public RewardContext() : base("Rewards")
        { 
        }

        //Create a database set for each data item
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<Customer> Customers { get; set; }

    }

И другое возможное решение, которое я нашел, это: updating the xsd for "validating" EF config section in web/app.config file to recognize newly added EF6 elements которые я также не знаю, как именно это сделать.

Несмотря на то, что когда я открываю MS SQL Server Management Studio я вижу базу данных, созданную для этого приложения, записи сохраняются и, как правило, работают, но я хотел бы разрешить это предупреждение и узнать, как настроить мои приложения на основе на EF 6 вправо.

Принятый ответ

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


Популярные ответы

Схема конфигурации была изменена с 5 по 6. Как сказано, узел поставщиков был заменен узлом контекста.

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




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему