C
C#2y ago
.eax

❔ EF Core many-to-many migration problems

I added a new entity VesselTransfer and added two one-to-many relationship to the Vessel entity, and added the configuration as shown in the code below to OnModelCreating. No problems with creating the migration and applying it to the DB, but now I'm getting this error during runtime Unable to determine the relationship represented by navigation 'Team.Persons' of type 'ICollection<Person>'.. On a entity and relationship that has no changes, and I'm getting some form of this exception on whatever query I run. The error has different entities and relationships depending on the query. I'm a bit of a loss on what is wrong as nothing seems wrong from the configurations.
public class VesselTransfer : BaseTrackedEntity
{
public DateTime Start { get; set; }
public DateTime End { get; set; }

[IsProjected] public int DropOffVesselId { get; set; }
public virtual Vessel DropOffVessel { get; set; }

[IsProjected] public int CollectVesselId { get; set; }
public virtual Vessel CollectVessel { get; set; }
}

public class Vessel : BaseEntityVortex
{
public string Name { get; set; }

public virtual ICollection<VesselTransfer> VesselTransferDropOffs { get; set; }
public virtual ICollection<VesselTransfer> VesselTransferCollections { get; set; }
}

// In db context
modelBuilder.Entity<Vessel>()
.HasMany(x => x.VesselTransferDropOffs)
.WithOne(x => x.DropOffVessel)
.HasForeignKey(x => x.DropOffVesselId)
.OnDelete(DeleteBehavior.Restrict);

modelBuilder.Entity<Vessel>()
.HasMany(x => x.VesselTransferCollections)
.WithOne(x => x.CollectVessel)
.HasForeignKey(x => x.CollectVesselId)
.OnDelete(DeleteBehavior.Restrict);
public class VesselTransfer : BaseTrackedEntity
{
public DateTime Start { get; set; }
public DateTime End { get; set; }

[IsProjected] public int DropOffVesselId { get; set; }
public virtual Vessel DropOffVessel { get; set; }

[IsProjected] public int CollectVesselId { get; set; }
public virtual Vessel CollectVessel { get; set; }
}

public class Vessel : BaseEntityVortex
{
public string Name { get; set; }

public virtual ICollection<VesselTransfer> VesselTransferDropOffs { get; set; }
public virtual ICollection<VesselTransfer> VesselTransferCollections { get; set; }
}

// In db context
modelBuilder.Entity<Vessel>()
.HasMany(x => x.VesselTransferDropOffs)
.WithOne(x => x.DropOffVessel)
.HasForeignKey(x => x.DropOffVesselId)
.OnDelete(DeleteBehavior.Restrict);

modelBuilder.Entity<Vessel>()
.HasMany(x => x.VesselTransferCollections)
.WithOne(x => x.CollectVessel)
.HasForeignKey(x => x.CollectVesselId)
.OnDelete(DeleteBehavior.Restrict);
3 Replies
Relevant
Relevant2y ago
That code doesn't show your Person class
.eax
.eaxOP2y ago
The teams or person entity does not seem relevant, they have had no changes, and if I rerun the query I get the same error with a but it's for different entities
Accord
Accord2y ago
Looks like nothing has happened here. I will mark this as stale and this post will be archived until there is new activity.
Want results from more Discord servers?
Add your server