У меня здесь такая «загадочная» проблема.В настоящее время я использую Entity Framework 4.1 Code First с моим приложением ASP.NET MVC 3, до вчерашнего дня оно работало замечательно ...
Произошло что-то действительно плохое, из-за чего мой Database.SetInitializer перестал работать.Объяснил:
У меня есть эта простая модель
public class User
{
public int Id { get; set; }
public int RoleId { get; set; }
[Required]
[StringLength(50)]
[DataType(DataType.Text)]
public string Login { get; set; }
[Required]
[StringLength(150)]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required]
[StringLength(32)]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataType(DataType.DateTime)]
public DateTime RegisteredDate { get; set; }
public virtual Role Role { get; set; }
}
А вот мой DbContext
public class MyContext : DbContext
{
public DbSet<Models.User> Users { get; set; }
}
Также я настраиваю пользовательский инициализатор (для теста)
public class MyInitializer
: DropCreateDatabaseIfModelChanges<MyContext>
{
}
Теперь я уже настроил строку подключения в Web.config (с именем, совпадающим с MyContext). Поэтому в Global.asax я вызываю этот простой код в методе Application_Start ()
Database.SetInitializer(new MyInitializer());
Но проблема Database.SetInitializer НЕ БУДЕТ создавать какую-либо базу данных, и что еще хуже, она даже не пытается заполнить существующую базу данных таблицами из контекста ... Я пытался отладить, но кажется, что приложение просто перепрыгивает черезкод инициализации базы данных ...
Я нашел одно решение - использовать эту строку кода
var ctx = new MyContext();
ctx.Database.Initialize(true);
Так что здесь я просто заставляю код создавать БД в любом случае ...
Но тот факт, что Database.SetInitializer не работает, действительно раздражает ... раньше он работал великолепно, я не знаю, что случилось.Я посмотрел в журнале событий Windows, журналы SQL Server ... но ничего там нет.Просто тишина.Но, может быть, я просто смотрю не в том месте?: S
Может кто-нибудь сказать мне, что происходит?
PS Я использую Visual Web Developer 2010 + SQL Server Express 2008 R2