Ich habe einen benutzerdefinierten Enum-Typ EmploymentState (komplexer Typ in EF 6 Begriff, denke ich)
In OnModelCreating löst der folgende Code eine Laufzeitausnahme aus.
modelBuilder.Entity<Employee>().Property(e => e.EmployementState.Value).HasColumnType("int");
Die Ausnahme zeigt unten:
Message=The expression 'e => e.EmployementState.Value' is not a valid property expression. The expression should represent a property access: 't => t.MyProperty'.
kann nicht herausfinden, wie man die Syntax richtig macht oder gibt es etwas anderes, das mir gefehlt hat?
Danke für Ihre Hilfe.
Angenommen, Sie haben das folgende Modell für Ihr EmployementState
Objekt, das die verschiedenen EmployementState
für Ihren Mitarbeiter enthält:
public class EmployementState
{
public int Id { get; set; }
public string Name { get; set; }
}
Sie können dann eine Referenz hinzufügen wie:
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
// All your user properties here
public int EmployementStateId { get; set; }
public virtual EmployementState EmployementState { get; set; }
}
Ich empfehle dies, weil es der beste Ansatz ist, wenn Sie mit Zuständen arbeiten, die Ihre Objekte beschreiben.
Da es sich um zwei separate Modelle handelt, sind sie konfigurierbar, so dass Konfigurationen wie diese unten einfach zu implementieren sind.
modelBuilder.Entity<Employee>().Property(e => e.EmployementStateId)
.HasColumnName("employement_state_ID");