Ich habe zuerst ein Problem mit dem Vererbung-Code. Ich habe Basisklasse, die wie folgt aussehen:EF: Map-Basisklasse-Eigenschaft mit fließenden API
public abstract class BaseEntity
{
public DateTime? DateCreated { get; set; }
public string UserCreatedId { get; set; }
public DateTime? DateModified { get; set; }
public string UserModifiedId { get; set; }
public virtual UserState UserCreated { get; set; }
public virtual UserState UserModified { get; set; }
}
und ich habe Vererbung es und diese geben Sie mir eine zusätzliche Spalte mit dem Namen UserCreated_userStateId und UserModified_UserStateId. Also versuche ich fließend API wie folgt aus:
modelBuilder.Entity<BaseEntity>().HasOptional(x => x.UserCreated).WithMany().HasForeignKey(x => x.UserCreatedId);
modelBuilder.Entity<BaseEntity>().HasOptional(X => X.UserModified).WithMany().HasForeignKey(x => x.UserModifiedId);
Aber geben Sie mir Fehler: „Ein oder mehrere Validierungsfehler während der Modellerzeugung erfasst wurden:
BaseEntity:. EntityType‚BaseEntity‘definiert hat keinen Schlüssel definieren der Schlüssel für diesen EntityType BaseEntities: EntityType: EntitySet 'BaseEntities' basiert auf dem Typ 'BaseEntity', der keine Schlüssel definiert hat. " Wie zu vermeiden, definieren Sie den Schlüssel und ändern Sie nur die Zuordnung der Eigenschaft? Ich habe Schlüssel in der abgeleiteten Klasse.
Sie möchten also einzelne Schlüssel für jede abgeleitete Klasse definieren und die Strategie "Tabelle pro konkrete Klasse" verwenden? Dann sollten Sie die Basisklasseneigenschaften für abgeleitete Klassenentitäten konfigurieren. – grek40
Wenn ich richtig verstehe, verwenden Sie nicht ** EF-Vererbung **, sondern einfache C# -Klassenvererbung? –
Ja, aber ich habe zu viele abgeleitete Klasse, um alle eins nach dem anderen zu konfigurieren. Dies wird mir viele Copy Paste Code produzieren und ich will es nicht. Ist es eine bessere Lösung? Ja, ich habe C# -Klasse Vererbung Ich versuche, sauberes Modell zu bekommen und alles in flüssiger API zu bekommen. – CrazyBaran