Ich habe zwei Klassen:EF Core: Wie fügt man die Beziehung zur Schatteneigenschaft hinzu?
public class DbLibrary
{
public Guid Id { get; set; }
public string Name { get; set; }
public List<DbDepartment> Departments { get; set; } = new List<DbDepartment>();
}
public class DbDepartment
{
public Guid Id { get; set; }
public string Name { get; set; }
}
In diesem Modell Ich brauche DbDepartment
hat den Link zu DbLibrary
nicht die Eigenschaft enthalten. Aber ich brauche die Kaskadenlöschung auf der Datenbankseite. Zu diesem Zweck füge ich die Schatteneigenschaft zu DbDepartment
hinzu. Es ist der Fremdschlüssel. Wie verbindet man den Primärschlüssel DbLibrary
mit der Schatteneigenschaft?
Dies ist mein Versuch:
protected override void OnModelCreating(ModelBuilder builder)
{
// Create the shadow property
var id = builder.Entity<DbDepartment>().Property<Guid>("LibraryId");
// Create the relationship for cascade delete
builder.Entity<DbLibrary>().HasMany(n => n.Departments)
.WithOne(m => id /* it is wrong */).OnDelete(DeleteBehavior.Cascade);
}
Ich habe keinen Schatten-Eigenschaft. Was meinst du damit? – ViRuSTriNiTy
Ich meine dies: https://docs.microsoft.com/en-us/ef/core/modeling/shadow-properties. I.e. Die Spalte "LibraryId" befindet sich nur in der Tabelle der Datenbank, aber die Klasse "DbDepartment" enthält keine Eigenschaft mit dieser Information. –
Entsprechend dem zitierten Link müssen Sie 'public DbLibrary Library {get; einstellen; } 'zu' DbDepartment'. Funktioniert das? – ViRuSTriNiTy