Как решить Предупреждение: Элемент entityFramework имеет недопустимый дочерний элемент поставщики. Список возможных ожидаемых элементов: «контексты»
Я играю с различными рабочими процессами 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
Событие кнопки У меня есть вся логика для добавления новых записей в мои жестко закодированные две сущности. Вот только часть этого:
//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
файл, но это область, где у меня не так много опыта, особенно когда IDE позаботился об этом, пока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
правильно.