19

Creé un modelo de Entity Framework basado en una base de datos existente, y luego generé las entidades POCO del modelo. La cadena de conexión en mi web.config no es Entity Framework, es solo la cadena de conexión estándar (le faltan las referencias CSDL, SSDL, MSL).Código primero contra base de datos Primero

puedo compilar mi aplicación, pero cuando corro me sale este error:

Code generated using the T4 templates for Database First and Model First development may not work correctly if used in Code First mode. To continue using Database First or Model First ensure that the Entity Framework connection string is specified in the config file of executing application. To use these classes, that were generated from Database First or Model First, with Code First add any additional configuration using attributes or the DbModelBuilder API and then remove the code that throws this exception


Mi pregunta es, donde en mi código no se dan cuenta de la POCOs vino de generación de automóviles, y cómo puede ¿Lo hago para comportarme como Code First? No quiero hacer referencia al CSDL, etc. en mi cadena de conexión.

+0

es malo que necesite usar primero el modelo y el código primero ... – Serdar

+1

@Serdar - No necesariamente. Es posible que desee comenzar a generar código a partir de un modelo conocido, pero a partir de ese momento, empiece a usar el código primero para escribir un nuevo código. –

+0

Lo acabo de dar :) lo siento ... – Serdar

Respuesta

23

Si la cadena de conexión tiene los metadatos, EF piensa que es Primero modelo o Base de datos primero. Si se trata de una cadena de conexión simple, EF piensa que es Código Primero. Sin embargo, si quiere empezar haciendo modelo primero pero hacer que EF piense que realmente está haciendo código primero (que es lo que está haciendo), asegúrese de estar utilizando el generador de código DbContext, no el predeterminado. Primero, los POCO de código son realmente eso: "obsolescentes objetos antiguos de C#": no hay una base de datos especial que tenga en cuenta ni cambie el rastreo en absoluto. Para usar el generador de código DbContext, haga clic con el botón derecho en el diagrama de su modelo y elija "Agregar nuevo elemento de generación de código ..." luego seleccione ADO.NET DbContext Generator. Además, dependiendo de cómo haya nombrado sus claves primarias y externas y/o si son más complicadas que solo IDs simples, probablemente necesite completar algún código para mapear las relaciones entre sus objetos en el método "OnModelCreating" en su contexto. Elimine la línea throw new UnintendedCodeFirstException(); y reemplácela con su código de mapeo. De lo contrario, EF puede no ser capaz de descifrar todas las relaciones (recuerda que no hay metadatos de los que pueda depender).

Espero que esto ayude.

+0

Tu respuesta me ha ayudado. Y puse su referencia en mi pregunta/respuesta @ http://stackoverflow.com/questions/18674079/ef-5-0-database-first-model-not-working-on-one-table/18675388#18675388 Gracias – HGMamaci

+0

@HGM Me alegro de que hayas encontrado útil esta respuesta. –

12

necesita lo siguiente en su fichero de configuración:

<connectionStrings> 
<add name="<The name of your class>" 
    connectionString="metadata=res://*/<test>.csdl|res://*/<test>.ssdl|res://*/<test>.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=<your source>;initial catalog=<your db>;persist security info=True;user id=<your user id>;password=<your password>;multipleactiveresultsets=True;App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" /> 
</connectionStrings> 
+0

Hola John, muchas gracias. Tu respuesta funcionó bien para mí. –

+0

si está cambiando su connectionString desde una fuente de datos (localdb) a una fuente de datos SQL use esta solución. Es decir, si ahora proporciona un nombre de servidor real para su fuente de datos, esta es la solución. –

0

estoy usando primera base de datos y se resolvieron mediante la copia del EDMX generada cadena de conexión a la app.config de mi solicitud de inicio. Uno ya existía pero aparentemente eran diferentes

Cuestiones relacionadas