Ответ 1
Вы можете установить EF6 Designer для VS2012 из здесь, и он обновит схему, которая проверяет файлы конфигурации.
Я играю с 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
справа.
Вы можете установить EF6 Designer для VS2012 из здесь, и он обновит схему, которая проверяет файлы конфигурации.
Схема конфигурации была изменена с 5 по 6. Как говорится, поставщики node были заменены контекстами node.
Идея состоит в том, что вы можете настроить поставщиков отдельно, а не все контексты, используя один и тот же провайдер. (Это происходит в тандеме с возможностью иметь несколько контекстов, которые находятся в одной базе данных. Это называлось многопользовательским, но позже было переименовано в более сжатый текст).