13

Necesito una cadena de conexión de SQL Server 2008 válida para el proyecto de primer código de Entity Framework 4.1. Me gustaría utilizar ahora con MVC 3.Cadena de conexión de SQL Server 2008 para el código de entidad marco 4.1 primero

Por ahora todavía es muy simple, sólo el 1 proyecto, 3 sencilla clase de modelo ...

sólo pude encontrar todo lo demás, como SQL Express, conexiones CE sobre la web ...

Encontrarlo por nombre en web.config ("ApplicationServices") está bien, porque cuando traté de usar, obtuve errores específicos para eso.

Lo mejor que pude conseguir es:

No se puede cargar el recurso especificado metadatos .

Traté de darlo como metadata=res://MyWebProject/MyWebProject.csdl| ... también pero no tuve éxito.

Así que no crea la base de datos para mí, incluso no coincide con el método OnModelCreating(DbModelBuilder modelBuilder).

Si trato de utilizar una conexión "anticuada" como las que encontré para SQL Server Express, pierde los metadatos.

Gracias por su ayuda con anticipación.

Respuesta

34

La idea de "Code-First" es que no debería tener que tratar con los archivos .csdl, .ssdl y .msl mencionados en la cadena de conexión. Si no se especifica en otro lugar, el DbContext buscará la cadena de conexión en el archivo web.config como describió. El constructor de la clase DbContext aceptará un par nombre-valor que especifique el nombre de la cadena de conexión en web.config. Por ejemplo:

<connectionStrings> 
    <add name="ConnectionName" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" /> 
</connectionStrings> 

puede hacer referencia en su contexto:

class MyContext : DbContext 
{ 
    public MyContext() : base("name=ConnectionName") { } 
    ... 
} 

La muestra de cadena de conexión que he proporcionado es en realidad una base de datos SQL Server. Es importante especificar ProviderName, ya que "Code-First" requiere que genere un .ssdl-File correspondiente (esquema de almacenamiento).

+0

Gracias, esto es lo que necesito. – DavidR

+0

Este hilo es un salvavidas. –

+0

Si el esquema de la base de datos no existe y estoy usando sql server 2008, ¿el agente creará automáticamente la base de datos? –

3

Además, puede nombrar su cadena de conexión después de su clase DbContext. En este caso es posible que no se menciona el nombre de la cadena de conexión

class MyContext : DbContext 
{ 
    //public MyContext() : base("name=ConnectionName") { } // not needed 
    ... 
} 

y la cadena de conexión es el folowing

<connectionStrings> 
    <add name="MyContext" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" /> 
</connectionStrings> 
Cuestiones relacionadas