Я хотел бы сначала использовать код EF с SQL Server CE 4 из проекта ASP.NET MVC, но вместо создания моей базы данных в папке App_Data
я получаю новую базу данных в экземпляре SQL Server Express, установленном на моя рабочая станция.
Как я могу вместо этого создать базу данных в папке App_Data
?
web.config
<connectionStrings>
<add name="NerdDinners" connectionString="Data Source=|DataDirectory|NerdDinners.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
Context
класс:
public class NerdDinners : DbContext
{
public DbSet<Dinner> Dinners { get; set; }
public DbSet<RSVP> RSVPs { get; set; }
}
Редактировать 1
Я пытался остановить SQL Server Express, думая, что это может привести к использованию SQL Server CE, но это привело к ProviderIncompatibleException
с внутренним исключением
{"Ошибка сети или экземпляра произошла во время
установление соединения с SQL Server. Сервер не найден или
был недоступен. Убедитесь, что имя экземпляра правильное и
SQL Server настроен для разрешения удаленных подключений. (поставщик: SQL
Сетевые интерфейсы, ошибка: 26 - Ошибка при поиске сервера / экземпляра
Указано) "}
Так что, похоже, моя установка хочет использовать SQL Server Express.
Редактировать 2
Было предложено явно передать имя строки подключения в DbContext, поэтому я изменил свой контекстный класс следующим образом:
public class NerdDinners : DbContext
{
public NerdDinners() : base("NerdDinners") { }
public DbSet<Dinner> Dinners { get; set; }
public DbSet<RSVP> RSVPs { get; set; }
}
В DinnersController вот как создается экземпляр контекста:
public class DinnersController : Controller
{
private NerdDinners db = new NerdDinners();
//
// GET: /Dinners/
public ViewResult Index()
{
return View(db.Dinners.ToList());
}
После внесения этих изменений БД все еще создается в SQL Server Express, поэтому кажется, что моя строка подключения игнорируется.