Не удалось получить соответствующие данные с помощью быстрой загрузки в dotnet core WebAPI

#asp.net #asp.net-mvc #asp.net-core #asp.net-web-api #asp.net-core-webapi

Вопрос:

Я пытаюсь загрузить соответствующие данные, используя быструю загрузку в entity framework и LINQ. Я использую шаблон CQRS в этом проекте. Ниже приведена моя бизнес-логика.

 public async Task<Result<List<GetProjectsDto>>> Handle(Query request, CancellationToken cancellationToken)
{
     var projects = await _context.Projects.Include(x => x.Regions).Include(x=>x.Units).Include(x=>x.Currency)
     .Include(x=>x.Client).Include(x=>x.Vendor).ToListAsync();
   
   // var projects= await _mapper.ProjectTo<GetProjectsDto>(_context.Projects).ToListAsync();
    
    var projectList = _mapper.Map<List<GetProjectsDto>>(projects);
    return Result<List<GetProjectsDto>>.Success(projectList);   
}
 

Это моя модель DTO:

 public class GetProjectsDto
{
    public Guid Id { get; set; }
    public string Title { get; set; }
    public string Category { get; set; }
    public Guid ClientId { get; set; }
    public virtual Client  Clients {get; set;}
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public Guid VendorId { get; set; }
    public virtual GetVendorsDto Vendors{get; set;}
    public string AdvancePayment { get; set; }
    public decimal ProjectCost { get; set; }
    public decimal VendorCost { get; set; }
    public string Hosting { get; set; }
    public string Domain { get; set; }
    public Guid UnitId { get; set; }
    public virtual GetUnitDto Units {get; set;}
    public Guid CurrencyId {get; set;}
    public virtual GetCurrenciesDto Currency{get; set;}
    public Guid RegionId {get; set;}
    public virtual RegionDto Regions{get; set;}
    public string ProjectNotes { get; set; }
}
 

Я могу получить все данные, но я не могу получить данные о клиентах и поставщиках.
Ниже приведена модель домена поставщика и клиента

 public class Client
{
    [Key]
    public Guid Id { get; set; }
    public string FullName { get; set; }
    public string Email { get; set; }
    public string Mobile { get; set; }
    public Guid RegionId {get; set;}
    public virtual Region Regions {get; set;}
    public string AlternateNumber { get; set; }
    public string Address { get; set; }
    public string ImageName { get; set; }
    [NotMapped]
    public IFormFile ImageFile { get; set; }

    [NotMapped]
    public string ImageSrc { get; set; }

    public virtual ICollection<Project> Projects {get; set;}
}
 

Модель домена поставщика

 public class Vendor
{   
    public Guid Id { get; set; }
    public string FullName { get; set; }

    public string Email { get; set; }
    public string Mobile { get; set; }
    public Guid RegionId { get; set; }
    public string CompanyName { get; set; }
    public string Website { get; set; }
    public string OfficalEmail { get; set; }
    public string OfficeNumber { get; set; }
    public virtual Region Regions { get; set; }
    public string AlternateNumber { get; set; }
    public string Address { get; set; }
    public string ImageName { get; set; }

    [NotMapped]
    public IFormFile ImageFile { get; set; }
    
    [NotMapped]
    public string ImageSrc { get; set; }
    public virtual ICollection<Project> Projects {get; set;}
}
 

This is my DTO for vendor

 public class GetVendorsDto
{                     
    public Guid Id { get; set; }
    public string FullName { get; set; }
    public string Email { get; set; }
    public string Mobile { get; set; }
    public Guid RegionId { get; set; }
    public virtual RegionDto Regions { get; set; }
    public string CompanyName {get; set;}
    public string Website {get; set;}
    public string OfficalEmail {get; set;}
    public string OfficeNumber { get; set; }
    public string AlternateNumber { get; set; }
    public string Address { get; set; }

    public string ImageName { get; set; }
  
    public string ImageSrc {get; set;}           
}
 

Ниже приведен ответ, который я получаю:

 [
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "title": "Legal Service",
    "category": "Web Development",
    "clientId": "8e2caed1-cee0-4716-54f3-08d930b7907c",
    "clients": null,
    "startDate": "2020-06-28T05:03:23.827",
    "endDate": "2021-11-28T05:03:23.827",
    "vendorId": "a4fff9c9-a8b5-469b-1ffa-08d930ca1e87",
    "vendors": null,
    "advancePayment": "10000",
    "projectCost": 48000,
    "vendorCost": 40000,
    "hosting": "",
    "domain": "",
    "unitId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "units": {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "name": "Months",
      "symbol": "M"
    },
    "currencyId": "af884fcf-c074-4151-ba9c-08d930aa0eb5",
    "currency": {
      "id": "af884fcf-c074-4151-ba9c-08d930aa0eb5",
      "name": "US Dollor",
      "symbol": "USD"
    },
    "regionId": "dd7a4e9c-2d0f-4cf7-e451-08d930aa0ecb",
    "regions": {
      "id": "dd7a4e9c-2d0f-4cf7-e451-08d930aa0ecb",
      "name": "KSA"
    },
    "projectNotes": "Need to Start"
  }
]
 

Как вы можете видеть, для клиента и поставщика я получаю null ответ.

Комментарии:

1. Отладка, чтобы проверить, содержит ли ваш список проектов правильные данные, проблема может заключаться в том, что у вас нет правильной карты объекта dto