EF Core-Fehler „Die abhängige Seite konnte für die Eins-zu-eins-Beziehung nicht ermittelt werden“C#

Ein Treffpunkt für C#-Programmierer
Guest
 EF Core-Fehler „Die abhängige Seite konnte für die Eins-zu-eins-Beziehung nicht ermittelt werden“

Post by Guest »

Ich verwende das neueste .NET 9.0
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; }
}
Und:

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; } = [];
Dies ist eine Eins-zu-eins-optionale Beziehung, daher verfügt die übergeordnete Klasse Truck über nullable-Eigenschaften DriverId und Driver-Navigationseigenschaften, während die untergeordnete Klasse Driver über eine nullable-Navigationseigenschaft Truck verfügt.
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; }
}
Die Konfigurationsklassen sind unten aufgeführt.

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);
}
}
Die Beziehung ist wie in der MS-Dokumentation empfohlen konfiguriert.
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post