entity-framework - mvc - entity framework connection string sql server
Entity Framework no puede usar el modelo DbContext, que se está creando (1)
Veo que está utilizando el EDMX con plantillas (.tt) para generar las clases. Pero si obtiene la información de una base de datos existente, el asistente creará una ConnectionString compatible con ObjectContext (información de metadatos y proveedor de entidad de marco).
El problema es que la conexión que estás usando es para ObjectContext (Base de datos primero y Modelo primero). Para el DbContext, debe usar la conexión sin las informaciones de metadatos.
Su cadena de conexión debe ser:
<connectionStrings>
<add name="PasDBEntities"
connectionString="data source=localhost;
initial catalog=PasDB;
integrated security=True;
pooling=False;
multipleactiveresultsets=True;
App=EntityFramework"
providerName="System.Data.SqlClient" />
Estoy usando EF 4.1 y creo un archivo EF edmx normal. Lo genero desde un DB.
Cuando se ha generado, hago clic con el botón derecho y selecciono agregar elemento de generación de código, para generar nuevas clases, y uso el DbContext en su lugar. Yo uso la plantilla generador de DbContext.
Todo funciona bien
Luego, consulto el contexto:
using (var context = new PasDBEntities())
{
var client=context.ClientCompanies.SingleOrDefault(_=>_.ID==clientCompanyId);
if(client!=null)
No tengo problemas para crear una nueva instancia del contexto, pero cuando intento consultarlo, aparece el problema. Me quedo atrapado en UnintentionalCodeFirstException. Y obtiene el error:
{"El código generado con plantillas T4 para Database First y Model First puede no funcionar correctamente si se usa en modo Code First. Para continuar utilizando Database First o Model First asegúrese de que la cadena de conexión de Entity Framework esté especificada en el archivo de configuración de la aplicación en ejecución Para utilizar estas clases, que se generaron desde Database First o Model First, con Code First agregue cualquier configuración adicional usando atributos o la API de DbModelBuilder y luego elimine el código que arroja esta excepción. "}
No quiero usar el código primero, pero no sé si puedo "apagarlo" o dónde está el problema.
Como referencia, aquí está mi constructor ...
public partial class PasDBEntities : DbContext
{
public PasDBEntities()
: base("PasDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
... y cadena de conexión:
<connectionStrings>
<add name="PasDBEntities"
connectionString="metadata=res://*/PasDB.csdl|
res://*/PasDB.ssdl|
res://*/PasDB.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=localhost;
initial catalog=PasDB;
integrated security=True;
pooling=False;
multipleactiveresultsets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>