Klucz zagraniczny do Microsoft.AspNet.Identity.EntityFramework.IdentityUser?
Jestem w VS 2013 i właśnie stworzyłem aplikację MVC.
Tworzę obiekt Zamierzam mieć klucz obcy do tabeli AspNetUsers w wynikowej bazie danych. Projekt ma ApplicationUser (wywodzący się z IdentityUser), który wygląda jak dopasowanie kolumny właściwości z tabelą AspNetUsers.
Jak właściwie zadeklarować klucz obcy do tego?
public MyObject
{
public string UserId { get; set; }
[ForeignKey("UserId")]
public ApplicationUser User { get; set;}
// other properties
}
Teraz modyfikuję ApplicationUser, aby mieć kolekcję MyObjects:
public ApplicationUser : IdentityUser
{
public virtual ICollection<MyObject> MyObjects { get; set; }
}
Wydaje się, że to pierwszy sposób, aby zrobić jeden do wielu w Kodzie EF. Jednak gdy aktualizuję bazę danych, otrzymuję błędy, które mówią, że członkowie tożsamości (IdentityUserLogin, IdentityUserRole itp.) Nie mają zdefiniowanych kluczy. Być może te klasy nie miały uczestniczyć w pierwszych migracjach EF Code?
Mógłbym przejść „do tyłu” i dodać klucz obcy za pomocą instrukcji SQL, ale gdybym chciał zaktualizować ponownie z Code First, mógłbym otrzymać błędy (że baza danych nie pasuje obecnie do starszej migracji lub czegoś podobnego).
Jak właściwie odwołać się do klucza obcego do tych tabel członkowskich?
Próbowałem również utworzyć klasę AspNetUser z pasującymi właściwościami tabeli AspNetUsers. Zamiast „public ApplicationUser” w klasie Client zadeklarowałem „public AspNetUser”. Spowodowało to niepowodzenie migracji - „Automatyczna migracja nie została zastosowana, ponieważ spowodowałoby to utratę danych”.
Więc co robić?