Ich verwende ASP.NET Identity 2.0. Derzeit würde Ich mag ApplicationUser
(umbenannt AspNetUsers
-Users
) von TabelleApplicationWise erweitern, um die Beziehung zwischen freigegebenen Projekten korrekt festzulegen
erweitern UserDetails
wie FirstName
usw. Was ist mein Problem? Ich habe Klassenbibliothek Projekt getrennt, die EF-Modell speichert. Ich mag es nicht, ein anderes EF-Modell zu generieren (wenn es nicht notwendig ist).
Ich habe in SQL Server-Beziehung zwischen Benutzer Tabelle und UserDetails
Tabelle, das ist alles in Ordnung. Leider ist in ASP-Projekt Benutzer Tabelle tief in IdentityUser
fest programmiert. Das heißt, ich habe ApplicationUser
, die IdentityUser
erbt.
Was ich versuche, ist in AppDbContext
:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Ignore columns
builder.Entity<ApplicationUser>().Ignore(c => c.PhoneNumberConfirmed);
// Rename tables
builder.Entity<ApplicationUser>().ToTable("Users");
builder.Entity<IdentityRole>().ToTable("Roles");
builder.Entity<IdentityRoleClaim<string>>().ToTable("IdentityRoleClaims");
builder.Entity<IdentityUserClaim<string>>().ToTable("IdentityUserClaims");
builder.Entity<IdentityUserLogin<string>>().ToTable("IdentityUserLogins");
builder.Entity<IdentityUserToken<string>>().ToTable("IdentityUserTokens");
// Relationship
builder.Entity<ApplicationUser>()
.HasOne(p => p.UserDetails)
.WithOne(i => i.Users)
.HasForeignKey<Shared.Database.UserDetails>(u => u.UserID);
}
Problem auf letzte Zeile ist in WithOne(i => i.Users)
, i.Users
nicht ApplicationUser
ist. Lustige Sache ist, dass ApplicationUser
gleiche Eigenschaften wie hat: D
So muss ich nur wissen, wie man es richtig konvertiert, um Beziehung zu bilden.
Irgendwelche Ideen, um das zu lösen? Oder irgendwelche Ratschläge, wie man es anders machen könnte?
Gemeinsames Projekt wird durch ein weiteres Projekt (WCF) verwendet, so kann ich es nicht aus IdentityUser
vererben setzen:/
Danke Jungs.
Dies ist die Antwort, die ich gesucht habe, leider ist es nicht der Weg, wie es geht, weil es immer einen Fehler mit Entity-Beziehung kommen wird. Ich muss es komplett neu gestalten. Jedenfalls danke :) – user1085907
Sie sind willkommen, froh, dass es geholfen hat. Obwohl ich wünschte, es wäre eine echte Lösung für das Problem, nicht sicher, was die Auswirkungen mit Ihrem realen Fall sind, aber ich nehme an, Sie wissen es besser :) –
Gut ist die Sache, dass asp.net Kern nicht unterstützen ado.net bei es funktioniert nicht wirklich gut mit grundlegenden Entity Framework, wie ich dachte. Meine nächsten Schritte sind also das Erstellen eines Datenbankmodells basierend auf dem Entity Framework Core, das diese Probleme lösen soll :) – user1085907