Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The expression 'x.Taken' is invalid inside an 'Include' operation, since it does not represent a property access: 't => t.MyProperty'

class Taak :

   
        [Key]    
        public int TaakId { get; set; }
        public int Pid { get; private set; }
        [Required]
        [Range(0,23.5)]
        public double Uur { get; private set; }
        [Required]
        public Functie Functie { get; private set; }
        public List<Taak> Taken { get; private set; }
        [NotMapped]
        public ICollection<WerknemerTaak> Werknemers { get; set; }

class WerknemerTaak:

  [Required]
        public Werknemer Werknemer { get; set; } 
        [Required]
        public Taak Taak { get; set; }
        
        public Afdelingen Afdeling { get; set; }
        public string Taakbeschrijving { get; set; }

ReadAllTakenWthWerknemers :

  public List<Werknemer> ReadAllWerknemersWithTaken()
        {
            var taken = ctx.Werknemers
                .Include(x => x.Taken)
                .ThenInclude(x => x.Taak)
                .ToList();
            
          
            return taken;
        }

Program.cs

_mgr.GetAllWerknemersWithTaken().ForEach(x =>
                        {
                            Console.WriteLine(x.ToString());
                            Console.WriteLine("Waarvan de taken zijn:");
                            x.Taken.ToList().ForEach(t =>
                            {
                                Console.WriteLine("\t"+t.Taak.ToString());
                            });
                        });

The error that I am getting is as follows:

The expression 'x.Taken' is invalid inside an 'Include' operation, since it does not represent a property access: 't => t.MyProperty'.

I tried adding Where(t => t.Werknemer.Pid.Equals(t.Taak.Pid))), with no luck at all. I searched for others with same problem, But didn't find an answer for me. And I need to use eager loading.

like image 753
akhandafm Avatar asked Jan 22 '26 17:01

akhandafm


1 Answers

So I got this error when converting from some Framework code to some .NET Core (EF Core). Turns out the code compiles fine with the old way:

myQueryable.Include(x => x.SubProp.Select(y => y.SubSubProp));

So watch out for that, and instead convert it (as gleaned from other answers) to the new EF Core ThenInclude

myQueryable.Include(x => x.SubProp).ThenInclude(x => x.SubSubProp);
like image 62
Suamere Avatar answered Jan 25 '26 06:01

Suamere



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!