Sono in procinto di convertire il mio modello .NET MVC5 in .NET Core MVC modello di ASPNETZERO. Quindi tutto il codice che sto convertendo funziona esattamente come ho bisogno nella mia soluzione di template MVC5. Il mio codice metodo è mostrato di seguito.
public async Task<EditCompanyDto> GetCompanyForEdit(NullableIdDto input)
{
var companyEditDto = (await _companyRepository.GetAsync((int)input.Id));
var cmp = companyEditDto.MapTo<EditCompanyDto>();
return cmp;
}
Questo codice funziona perfettamente nel modello MVC5 e restituisce le entità correlate di Indirizzo, Contatto e Nota. Nella soluzione .NET Core questo stesso identico codice restituisce solo le raccolte Address e Contact nel metodo precedente. Continua a restituire la raccolta Note come NULL.
Di seguito è mostrata la mia entità aziendale. Ho rimosso alcuni campi per questo post, ma ho lasciato tutte le proprietà di navigazione.
public class Company : FullAuditedEntity, IMustHaveTenant
{
public string CompanyTaxId { get; set; }
public bool ActiveYesNo { get; set; }
public virtual NoteHeader Note { get; set; }
public virtual List<CompanyAddress> Addresses { get; set; }
public virtual List<CompanyContact> Contacts { get; set; }
public virtual int TenantId { get; set; }
public Company()
{
Addresses = new List<CompanyAddress>();
Contacts = new List<CompanyContact>();
}
}
Dici raccolta Note . Per quanto vedo la nota non è raccolta. Supponiamo che sia collezione. L'approccio di Gabriel è corretto. Ma non includeva il campo Nota. Di conseguenza il tuo codice dovrebbe essere così
var company = _companyRepository.GetAll()
.Include(c => c.Addresses)
.Include(c => c.Contacts)
.Include(c => c.Note)
.FirstOrDefault(x => x.Id == input.Id);
Nota: GetAll () non significa che prendi tutti i dati dal database. GetAll () restituisce IQueryable. Quindi, puoi aggiungere i metodi Linq dopo di esso. Ma se usi GetAllList (), sì, recupera tutti i dati dalla tabella.
Prova a caricare la tua raccolta utilizzando il metodo Include .
Puoi usarlo in questo modo:
var company = _companyRepository.GetAll()
.Include(c => c.Addresses)
.Include(c => c.Contacts)
.FirstOrDefault(x => x.Id == input.Id);