¿Cómo paso una cadena de conexión al primer código de la entidad DbContext? La generación de mi base de datos funciona correctamente cuando tanto DbContext como la cadena de conexión en web.config están en el mismo proyecto y se nombran de la misma manera. Pero ahora tengo que mover el DbContext a otro proyecto, de modo que estoy probando pasando una cadena de conexión a la misma de la siguiente manera:Pasar la cadena de conexión a primer código DbContext
Modelo & Contexto
public class Dinner
{
public int DinnerId { get; set; }
public string Title { get; set; }
}
public class NerdDinners : DbContext
{
public NerdDinners(string connString)
: base(connString)
{
}
public DbSet<Dinner> Dinners { get; set; }
}
Acción
public ActionResult Index()
{
var db = new NerdDinners(ConfigurationManager.ConnectionStrings["NerdDinnerDb"].ConnectionString);
var dinners = (from d in db.Dinners
select d).ToList();
return View(dinners);
}
Web.Config
<connectionStrings>
<add name="NerdDinnerDb" connectionString="Data Source=|DataDirectory|NerdDinners.sdf" providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
Si configuro un punto de interrupción en la acción y analizo db
, la cadena de conexión está ahí, pero no crea ni encuentra la base de datos ni nada.
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
¿Está absolutamente seguro de que se está conectando al servidor correcto? El error es una excepción típica de SQL Server/Express. No suena como si estuvieras conectado a una base de datos Sql CE ... y el Código EF primero creará la base de datos si no existe ... a menos que la ruta no se encuentre quizás ... –