Bonjour,
J'ai un soucis d'exécution de code, en mode Debug, ça fonctionne très bien et en mode Release non.

Détails techniques :
VS2019
.Net Framework 4.8
C# 8.0
EFCore 3.1.22

Quand je suis en mode Release, j'ai ce message d'erreur :
System.InvalidOperationException
HResult=0x80131509
Message=Unable to determine the relationship represented by navigation property 'MonParent.MaCollectionDEnfants' of type 'ICollection<MonEnfant>'. Either manually configure the relationship, or ignore this property using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'.
Source=Microsoft.EntityFrameworkCore
Arborescence des appels de procédure*:
à Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator.ValidatePropertyMapping(IModel model, IDiagnosticsLogger`1 logger)
à Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator.Validate(IModel model, IDiagnosticsLogger`1 logger)
à Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator.Validate(IModel model, IDiagnosticsLogger`1 logger)
à Microsoft.EntityFrameworkCore.SqlServer.Internal.SqlServerModelValidator.Validate(IModel model, IDiagnosticsLogger`1 logger)
à Microsoft.EntityFrameworkCore.Metadata.Conventions.ValidatingConvention.ProcessModelFinalized(IConventionModelBuilder modelBuilder, IConventionContext`1 context)
à Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.ImmediateConventionScope.OnModelFinalized(IConventionModelBuilder modelBuilder)
à Microsoft.EntityFrameworkCore.Metadata.Conventions.Internal.ConventionDispatcher.OnModelFinalized(IConventionModelBuilder modelBuilder)
à Microsoft.EntityFrameworkCore.Metadata.Internal.Model.FinalizeModel()
à Microsoft.EntityFrameworkCore.ModelBuilder.FinalizeModel()
à Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext context, IConventionSetBuilder conventionSetBuilder)
à Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.GetModel(DbContext context, IConventionSetBuilder conventionSetBuilder)
à Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()
à Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()
à Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.<>c.<TryAddCoreServices>b__7_3(IServiceProvider p)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScopeCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
à Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
à Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
à Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
à Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()
à Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
à Microsoft.EntityFrameworkCore.DbContext.get_ChangeTracker()
à BusinessDALInit.Program.Main(String[] args)
Voici une simplification de la déclaration de mes objets
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    public class MonParent
    {
        [Key]
        [Description("Identifiant interne à la base de données")]
        public int ID { get; set; }
 
        public virtual ICollection<MonEnfant> ParentDeMesEnfants { get; set; } = new HashSet<MonEnfant>();
 
        public virtual ICollection<MonEnfant> EnfantsDeMesParents { get; set; } = new HashSet<MonEnfant>();
    }
 
    public class MonEnfant
    {
        [Description("Identifiant du premier parent")]
        public int MonParent1ID { get; set; }
        public MonParent MonParent1{ get; set; }
 
        [Description("Identifiant du second parent")]
        public int MonParent2ID { get; set; }
        public MonParent MonParent2{ get; set; }
    }
 
    public class MonDbContext : DbContext
    {
        public virtual DbSet<MonParent> MonParents { get; set; }
        public virtual DbSet<MonEnfant> MonEnfants { get; set; }
 
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<MonEnfant>()
                .HasAlternateKey(o => new { o.MonParent1ID, o.MonParent2ID });
        }
    }

Néanmoins, ça fonctionne en mode Debug mais lorsque je passe en mode Release, ça plante

Une idée du pourquoi et surtout pourquoi cette différence ?

Merci