Entity Framework Database.SetInitializer просто не работает

У меня здесь такая "загадочная" проблема. В настоящее время я использую подход 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-сервера ... но там ничего нет. Просто тишина. Но, может быть, я просто ищу не в том месте? : S

Кто-нибудь может сказать мне, что происходит?

P.S Я использую Visual Web Developer 2010 + SQL Server Express 2008 R2

16
задан Mathieu 31 January 2013 в 14:58
поделиться