Jak rozwiązać Ostrzeżenie: Element 'entityFramework' ma niepoprawny element podrzędny 'provider'. Lista możliwych elementów oczekiwanych: „konteksty”
Bawię się różnymi procedurami EF. Wczoraj zrobiłem nowy projekt iEntity Framework 6
była pierwszą sugestią zNuget
więc postanowiłem spróbować, to także bardzo mały projekt przeznaczony wyłącznie do celów edukacyjnych, więc chyba dobrze będzie spróbowaćEF 6
odkąd pracuję głównie zEf 5
.
Moja aplikacja jest oparta naCode First
podejście. Struktura rozwiązania jest pokazana na ekranie drukowania:
ProjektCodeFirstClasses
ma trzymać moich Entitów. Dla uproszczenia i dlatego, że podążam za samouczkiem, używam tylko jednej klasy, którą możesz zobaczyć -Customer.cs
. Mam tam:
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; }
}
I inne klasy -Purchase
iCustomer
które są trywialne, więc nie wkleję ich tutaj.
Drugi projekt, jaki widzisz, toWindows Forms
projekt z jednym formularzem i przyciskiem na nim. Naclick
Zdarzenie przycisku Mam całą logikę dodawania nowych rekordów do moich dwóch jednostek zakodowanych na stałe. Oto część tego:
//some code...
//Add the record and save it
context.Customers.Add(newCustomer);
context.Purchases.Add(newPurchase);
context.SaveChanges();
MessageBox.Show("Record Added!");
Do tej pory nic innego niż to, do czego jestem przyzwyczajonyEF 5
. Mogę zbudować projekt, mogę go uruchomić i wszystko jest wykonywane zgodnie z oczekiwaniami. Jednak otrzymuję to ostrzeżenie z tytułu:
Warning 1 The element 'entityFramework' has invalid child element 'providers'. List of possible elements expected: 'contexts'.
I chociaż używam głównieMS SQL Server Management Studio
Zauważyłem, że nie mogę zarządzać swoimi połączeniami / bazami danych z IDE -Visual Studio 2012
, ale to nie był problemEF 5
.
Moje badania zawęziły możliwe źródło problemu / rozwiązania do ręcznej zmianyApp.config
plik, ale jest to obszar, w którym nie mam zbyt dużego doświadczenia, zwłaszcza gdy IDE zajęło się nim doEF 6
. Więc wyślę oba mojeApp.config
pliki dla tego rozwiązania:
Ten zCodeFirstClasses
projekt :
<?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>
I z mojegoTestCodeFirst
projekt:
<?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>
A inne możliwe rozwiązanie, które znalazłem to:updating the xsd for "validating" EF config section in web/app.config file to recognize newly added EF6 elements
nie wiem też, jak to zrobić.
Nawet jeśli otworzęMS SQL Server Management Studio
Widzę bazę danych utworzoną dla tej aplikacji, zapisy są zapisywane i ogólnie wydaje się, że działa, ale mimo to chciałbym rozwiązać to ostrzeżenie i dowiedzieć się, jak skonfigurować moje aplikacje na podstawieEF 6
dobrze.