EF Core Lazy Загрузка: - PullRequest
       46

EF Core Lazy Загрузка:

0 голосов
/ 14 апреля 2020

У меня есть следующий код:

        var list = _context.RandomPoolSelectionMembers
            .Include(d => d.Driver)
            .ThenInclude(driver => driver.DlStateProvince)
            .Where(p => p.RandomPoolSelectionId == lastSelection.Id).ProjectTo<RandomPoolSelectionMemberDto>(_mapperConfig).ToList();

, где _mapperConfig:

        _mapperConfig = new MapperConfiguration(cfg =>
        {
            cfg.AddProfile<AutoMapperEfRandomPoolSelectionMember>();
        });


public class AutoMapperEfRandomPoolSelectionMember : AutoMapper.Profile
{
    public AutoMapperEfRandomPoolSelectionMember()
    {
        CreateMap<RandomPoolSelectionMember, RandomPoolSelectionMemberDto>()
            .ForMember(destinationMember => destinationMember.PrimaryID, o => o.MapFrom(src => src.Driver.PrimaryId))
            .ForMember(d => d.FirstName, o => o.MapFrom(src => src.Driver.FirstName))
            .ForMember(d => d.LastName, o => o.MapFrom(src => src.Driver.LastName))
            ;
    }

Driver сущность имеет следующие свойства:

public partial class Driver : BaseEntity
{
    public Driver()
    {
        this.CreatedOn = DateTime.UtcNow;
        this.PayrollPaymentMethod = PaymentMethod.PayCheck;
    }

    public int CarrierId { get; set; }

    public string FirstName { get; set; }

    public string MiddleName { get; set; }

    public string LastName { get; set; }

    public string Nickname { get; set; }

    public string Suffix { get; set; }

    public string PrimaryId
    {
        get
        {
            if (!string.IsNullOrWhiteSpace(DlNumber) && DlStateProvinceId.HasValue)
                return DlStateProvince.Abbreviation + DlNumber.Replace("-", "");
            else
                return string.Empty;
        }
    }

    public int? DlStateProvinceId { get; set; }

    public virtual StateProvince DlStateProvince { get; set; }

но я получаю сообщение об ошибке:

System.InvalidOperationException: 'Ошибка, сгенерированная для предупреждения' Microsoft.EntityFrameworkCore.Infrastructure.DetachedLazyLoadingWarning: была предпринята попытка лениво загрузить свойство навигации DlStateProvince на отдельном объекте введите «DriverProxy». Ленивая загрузка не поддерживается для отдельных объектов или объектов, которые загружены с помощью «AsNoTracking ()». Это исключение можно подавить или зарегистрировать, передав идентификатор события «CoreEventId.DetachedLazyLoadingWarning» методу «ConfigureWarnings» в «DbContext.OnConfiguring» или «AddDbContext».

что не так, я включил виртуальный свойства для запроса ....

...