#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