Próbuję użyć kodu First z migracjami. Mimo że nie ma żadnych bieżących zmian w moim modelu, otrzymuję wyjątek. Kiedy dodać do migracji, w górę iw dół są puste, ale pojawia się błąd wykonania z komunikatem następująco:Model wspierający kontekst "DataContext" zmienił się od czasu utworzenia bazy danych
Wyjątek System.InvalidOperationException typu „” wystąpił w EntityFramework.dll ale nie był obsługiwany w kodzie użytkownika
Informacje dodatkowe: Model wspierający kontekst "MyDataContext" zmienił się od czasu utworzenia bazy danych. Rozważyć użycie kod najpierw Migracje do aktualizacji bazy danych (http://go.microsoft.com/fwlink/
Moja architektura jest następujący:
- projekt DataAccess że zawiera kontekstu konfiguracje płynu i kod migracje
- projektu modelu, który zawiera klasy poco
- Projekty Web API i MVC, które zawierają ciąg połączeń w odpowiednich plikach web.config:
Dodatkowo mam następujący kod:
DbInitializer
public static MyDataContext Create()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDataAccess.MyDataContext, MyDataAccess.Migrations.Configuration>());
return new MyDataContext(ConfigurationManager.ConnectionStrings["MyDataContext"].ConnectionString, null);
}
Zacząłem AutomaticMigrationsEnabled = false; w konstruktorze konfiguracji migracji, ponieważ zrozumiałem, że pozwoli to (i wymaga), żebym miał większą kontrolę nad tym, kiedy migracje zostały zastosowane. Próbowałem również ustawić to prawda, ale z tym samym wynikiem.
Po otrzymaniu tego błędu dodałem nową migrację, a metoda Up była pusta. Zaktualizowałem bazę danych do tej nowej migracji, a rekord został utworzony w tabeli _migrationHistory, ale nadal otrzymuję błąd podczas próby uruchomienia aplikacji. Ponadto dane źródłowe nie zostały dodane do bazy danych.
protected override void Seed(MyDataAccess.MyDataContext context)
{
IdentityResult ir;
var appDbContext = new ApplicationDbContext();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(appDbContext));
ir = roleManager.Create(new IdentityRole("Admin"));
ir = roleManager.Create(new IdentityRole("Active"));
ir = roleManager.Create(new IdentityRole("InActive"));
var userNamager = new UserManager<User>(new UserStore<User>(appDbContext));
// assign default admin
var admin = new User { UserName = "administrator", Email = "[email protected]" };
ir = userNamager.Create(admin, "[email protected]");
ir = userNamager.AddToRole(admin.Id, "Admin");
}
gdzie
public class ApplicationDbContext : IdentityDbContext<User>
{
public ApplicationDbContext()
: base("MyDataContext", throwIfV1Schema: false)
{
}
...
Pytanie: Jeżeli Dodaj migracji nie widzi żadnych zmian w modelu, dlaczego ten błąd podczas uruchamiania? Dlaczego kod nasion nie został trafiony? Jak mogę to naprawić, lub jeśli nie można tego ustalić, w jaki sposób mogę dalej określić główną przyczynę?
Pracował jak urok! Wielkie dzięki. Utknąłem przez wiele dni i zawsze kończyłem klonowanie całego projektu i budowanie. Jeszcze raz dziękuję! – OhmnioX
, więc możesz mi powiedzieć proces ... gdzie znaleźć tę konsolę programu Package Manager? –
W Visual Studio -> Menu narzędzi –