Jeśli korzystałeś z ASP.NET MVC 4, zauważysz, że domyślną aplikacją Internetową jest użycie dostawcy SimpleMembership, wszystko jest w porządku i działa w porządku.Entity Framework Code-First Issues (SimpleMembership UserProfile table)
Problem pochodzi z pokolenia domyślnej bazy danych, mają POCO dla UserProfile
zdefiniowane tak:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
.. który następnie jest generowany tak:
using (var context = new UsersContext())
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
}
Działa to dobrze, baza danych jest generowana dobrze i działa bez problemu. Jednak jeśli mam zmienić poco takiego i usuwać bazy danych:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string EmailAddress { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public string Country { get; set; }
public string CompanyName { get; set; }
}
generowane są tylko pierwsze 2 kolumny, UserId
i EmailAddress
. Działa tylko w porządku kodowym (logowanie/rejestracja), ale oczywiście żaden z moich innych danych użytkownika nie jest przechowywany.
Czy tu czegoś brakuje? Z pewnością powinien wygenerować bazę danych opartą na całym obiekcie UserProfile
.
Wygląda dziwnie. Czy to jest powtarzalne? To znaczy. Oczyść i odbuduj wszystko, dwukrotnie sprawdź wyniki. Patrzysz w prawo Db? –
@HenkHolterman Niestety tak, doprowadzałem się do szaleństwa przez ostatnie 2 dni, próbowałem nawet przypisać każdą kolumnę swoim własnym imieniem i po prostu ich tam nie ma. Co gorsza jest to, że 'UserId' i' EmailAddress' (lub jakkolwiek to zmieniam) * są * w porządku. –
@HenkHolterman Warto również zauważyć, że próbowałem zmienić tę tabelę na zupełnie nowym projekcie, tak jak test i ma ten sam problem. To, czego nie próbowałem, to samodzielne generowanie bazy danych za pomocą Entity Framework, może zrobię to później, ale wolałbym pozostać jak najbardziej dostosowany do domyślnej struktury ASP.NET MVC4 na teraz. –