entity-framework - seleccionado - su proyecto hace referencia a la version mas reciente de entity framework oracle
Cómo resolver Advertencia: el elemento ''entityFramework'' tiene ''proveedores'' de elementos secundarios no válidos. Lista de posibles elementos esperados: ''contextos'' (2)
Estoy jugando con EF diferentes flujos de trabajo. Ayer hice un nuevo proyecto y Entity Framework 6
fue la primera sugerencia de Nuget
así que decidí probarlo, también es un proyecto muy pequeño para fines de aprendizaje, así que supongo que será una buena experiencia probar EF 6
ya que He estado trabajando principalmente con Ef 5
.
Mi aplicación se basa en el enfoque de Code First
. La estructura de la solución se muestra en la pantalla de impresión:
El proyecto CodeFirstClasses
está destinado a contener mis Entites. Por motivos de simplicidad y porque sigo un tutorial, utilizo solo una clase, como puede ver, Customer.cs
. Ahí tengo:
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; }
}
Y las otras clases, Purchase
y Customer
que son triviales, así que no las pegaré aquí.
El otro proyecto como puede ver es Windows Forms
proyecto de Windows Forms
con solo un formulario y un botón. En el evento click
del botón, tengo toda la lógica para agregar nuevos registros a mis dos entidades codificadas. Aquí hay solo una parte de esto:
//some code...
//Add the record and save it
context.Customers.Add(newCustomer);
context.Purchases.Add(newPurchase);
context.SaveChanges();
MessageBox.Show("Record Added!");
Hasta ahora nada diferente de lo que estoy acostumbrado con EF 5
. Puedo construir el proyecto, puedo ejecutarlo y todo se ejecuta como se espera. Sin embargo, recibo esta advertencia del título:
Warning 1 The element ''entityFramework'' has invalid child element ''providers''. List of possible elements expected: ''contexts''.
Y aunque estoy usando principalmente MS SQL Server Management Studio
me he dado cuenta de que no puedo administrar mis conexiones / bases de datos desde IDE - Visual Studio 2012
, pero esto no fue un problema con EF 5
.
Mi investigación redujo la posible fuente de problema / solución para cambiar manualmente el archivo App.config
, pero esta es un área donde no tengo mucha experiencia, especialmente cuando el IDE se hizo cargo de ella hasta EF 6
. Así que publicaré mis App.config
archivos App.config
para esta solución:
El del proyecto 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>
Y de mi proyecto 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>
Y la otra solución posible que encontré es: updating the xsd for "validating" EF config section in web/app.config file to recognize newly added EF6 elements
que tampoco sé exactamente cómo hacerlo.
Aunque cuando abro MS SQL Server Management Studio
veo la base de datos creada para esta aplicación, los registros se guardan y, en general, parece funcionar, pero me gustaría resolver esta advertencia y conocer cómo configurar mis aplicaciones basadas en en EF 6
derecha.
El esquema de configuración se cambió de la versión 5 a la 6. Como se dice, el nodo de proveedores fue reemplazado por un nodo de contextos.
La idea es que pueda configurar los proveedores de forma individual en lugar de todos los contextos utilizando el mismo proveedor. (Esto va en conjunto con la posibilidad de tener múltiples contextos que residen dentro de una base de datos. Esto solía llamarse multi-tenant pero luego se renombró para ser más conciso)
Puede instalar el EF6 Designer para VS2012 desde aquí y actualizará el esquema que valida los archivos de configuración.