22

Me rindo. He encontrado esto: http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx Y pensó, eso es genial. Así que rápidamente rediseñé mi modelo para aprovechar lo mejor de dos mundos.Modelo Primero con DbContext, falla al inicializar la nueva base de datos

Pero ahora mi modelo falla al crear una nueva base de datos (o al agregar tablas a la existente). consigo 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.

A:

 protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

Y ese es mi cadena de conexión:

<add name="ForumContextContainer" 
providerName="System.Data.SqlClient" 
connectionString="Data Source=.\SQLExpress; Initial Catalog=iForum; Integrated Security=True"/> 

Nota. Añadí Initial Catalog más tarde, para probar si iba a funcionar, pero era exactamente lo mismo.

Respuesta

32

Esta es una cadena de conexión incorrecta. Una vez que esté utilizando model-first/database-first (EDMX), debe usar Entity connection string haciendo referencia a los archivos de metadatos .ssdl, .msl y .csdl. También tenga en cuenta que debe crear su base de datos en tiempo de diseño al crear un modelo desde EDMX = debe generar un script SQL y ejecutarlo para crear la base de datos.

+0

En realidad encontré una forma de cambiar las Plantillas T4. Pero gracias de todos modos, –

+14

@ Łukasz Baran se preocupan por compartir su solución? –

+0

@JoelBeckham Mi problema fue lanzar new UnintentionalCodeFirstException(); en la clase de Entidades. – Saber

2

Supongo que este error generalmente aparece cuando alguien agrega el EDMX/db primero a una biblioteca de clases en la solución. Si lo hace, asegúrese de que la cadena de conexión agregada en el archivo App.config en el proyecto de biblioteca de clase esté disponible en el archivo web.config o en el archivo de configuración del proyecto exe (así que simplemente cópielo/péguelo allí).

+0

Esta solución simple funcionó para mí cuando todos los demás habían fallado. Solo tuve que copiar la sección de la cadena de conexión desde app.config en el proyecto modelo dll en la aplicación MVC web.config. – Thronk

0
Add this connection string to web config and make changes: 

<add name="Entities" 
connectionString=" 
metadata=res://*/EFmodel.csdl|res://*/EFmodel.ssdl|res://*/EFmodel.msl; 
provider=System.Data.SqlClient;provider 
connection string=&quot; 
data source=SAI-PC; 
initial catalog=OrderDB; 
user id=sa; 
password=Pass$123; 
MultipleActiveResultSets=True; 
App=EntityFramework&quot;" 
providerName="System.Data.EntityClient" /> 

EFmodel is my .edmx file name. 

OrderDB is database name. 
-1

Eliminar o comentar esta:

//protected override void OnModelCreating(DbModelBuilder modelBuilder) 
//{ 
// throw new UnintentionalCodeFirstException(); 
//} 

Y cambiar la cadena de conexión a una válida.

Cuestiones relacionadas