Assume we have the following entities:
Code: Select all
public class UserRole
    {
        public Guid Id { get; set; }
        public String Name { get; set; }
        public virtual IList<User> Users { get; set; }
    }
    public class User
    {
        public Guid Id { get; set; }
        public String Name { get; set; }
        public Guid UserRoleId { get; set; }
        public virtual UserRole UserRole { get; set; }
        public virtual IList<Message> Messages { get; set; }
        public virtual IList<Picture> Pictures { get; set; }
    }
    public class Message
    {
        public Guid Id { get; set; }
        public String Text { get; set; }
        public Guid UserId { get; set; }
        public virtual User User { get; set; }
    }
    public class Picture
    {
        public Guid Id { get; set; }
        public String Name { get; set; }
        public Guid UserId { get; set; }
        public virtual User User { get; set; }
    } First I've tried to disable Lazy loading:
Code: Select all
DbAccess.ActiveContext.Configuration.LazyLoadingEnabled = false;
            var userRoles = DbAccess.ActiveContext.UserRoles.AsNoTracking().ToList();After that I've tried Eager loading:
Code: Select all
var userRoles = DbAccess.ActiveContext.UserRoles.AsNoTracking().Include(ur => ur.Users.Select(us => us.Messages))
                .Include(ur => ur.Users.Select(us => us.Pictures)).ToList();Sample project I've uploaded here (I'm using Devart.Data.SQLite.Entity.EF6 5.15.1587){"OUTER APPLY is not supported by SQLite."}
Click FillDatabase button first to create database (on disk D).