Beim Versuch, eine Migration zu erstellen, erhalte ich die folgende Fehlermeldung:
Es konnte keine Migration erstellt werden „DbContext“ vom Typ „AppDbContext“. Die Ausnahme „Die abhängige Seite konnte für die Eins-zu-eins-Beziehung zwischen „Truck.Driver“ und „Driver.Truck“ nicht ermittelt werden. Um die abhängige Seite der Beziehung zu identifizieren, konfigurieren Sie die Fremdschlüsseleigenschaft. Sollten diese Navigationen nicht Teil derselben Beziehung sein, konfigurieren Sie sie unabhängig voneinander über separate Methodenketten in „OnModelCreating“. Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?LinkId=724062. wurde beim Versuch, eine Instanz zu erstellen, ausgelöst. Informationen zu den verschiedenen Mustern, die zur Entwurfszeit unterstützt werden, finden Sie unter https://go.microsoft.com/fwlink/?linkid=851728
Die Klassen sind wie folgt :
Code: Select all
public class DriverEntity : Entity
{
public string FirstName { get; set; } = string.Empty;
public string? MiddleName { get; set; }
public string LastName { get; set; } = string.Empty;
public TruckEntity? CurrentTruck { get; set; }
}
Code: Select all
public class TruckEntity : Entity
{
public string Registration { get; set; } = string.Empty;
public int? TrailerId { get; set; }
public TrailerEntity? Trailer { get; set; }
public int? DriverId { get; set; }
public DriverEntity? CurrentDriver { get; set; }
public List Trips { get; set; } = [];
Sie werden von der Entity-Klasse abgeleitet:
Code: Select all
public abstract class Entity
{
public int Id { get; set; }
public bool IsDeleted { get; set; }
public DateTime CreatedDate { get; set; } = DateTime.UtcNow;
public DateTime? ModifiedDate { get; set; }
public string? ModifiedBy { get; set; }
}
Code: Select all
public class DriverConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasKey(d => d.Id);
builder.Property(d => d.FirstName)
.IsRequired()
.HasMaxLength(50);
builder.Property(d => d.LastName)
.IsRequired()
.HasMaxLength(50);
}
}
Code: Select all
public class TruckConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.HasKey(t => t.Id);
builder.HasOne(t => t.Trailer)
.WithOne(t => t.Truck)
.HasForeignKey(tr => tr.TrailerId)
.IsRequired(false);
builder.HasOne(t => t.CurrentDriver)
.WithOne(t => t.CurrentTruck)
.HasForeignKey(t => t.DriverId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired(false);
builder.HasMany(t => t.Trips)
.WithOne()
.HasForeignKey(t => t.TruckId)
.OnDelete(DeleteBehavior.Restrict);
builder.Property(t => t.Registration)
.IsRequired()
.HasMaxLength(15);
}
}
Warum kann dieser Fehler bestehen bleiben, obwohl er richtig konfiguriert ist?
Eine ähnliche Beziehung tritt auch bei LKW und Anhänger auf, aber ich vermute, dass EF Core das Problem mit der Fahrer-LKW-Beziehung einfach zuerst erkennt.