Как разрешить предупреждение: элемент «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. Вот лишь часть его:

    //some code...
    //Add the record and save it
    context.Customers.Add(newCustomer);
    context.Purchases.Add(newPurchase);
    context.SaveChanges();

    MessageBox.Show("Record Added!");

Пока что ничем не отличается от того, с чем я привык с 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 :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

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

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

И другое возможное решение, которое я нашел, это: 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
Является ли этот КБ законным? Да, узнайте, почему