solicitado seleccionado referencia recuperar reciente que pueden puede pudo proyecto proveedor net metadatos mas los instalado hace generador framework esté especificados error encuentra encontrar embargo ejecutar datos compatible codigo cargar archivos archivo entity-framework visual-studio-2012 ef-code-first entity-framework-6

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.