ho le seguenti entitàEntity Framework-registrazione Spiegazione
//Active Auction Entity
public class ActiveAuction
{
public int Id { get; set; }
public string Title { get; set; }
public int? FirstAuctionId { get; set; }
public int? SecondAuctionId { get; set; }
public int? ThirdAuctionId { get; set; }
public virtual Auction FirstAuction { get; set; }
public virtual Auction SecondAuction { get; set; }
public virtual Auction ThirdAuction { get; set; }
}
// Auction Entity
public class Auction
{
public int AuctionId { get; set; }
public AuctionStatus AuctionStatus { get; set; }
public int? DepartmentId { get; set; }
public virtual Department Department { get; set; }
}
// Department Entity
public class Department
{
public int DepartmentId { get; set; }
public string DepartmentName { get; set; }
public int? AdminId { get; set; }
public virtual Admin Admin { get; set; }
}
Quello che sto cercando di fare è quello di ottenere Active Auctions
con Auctions
caricati e Auction
hanno anche Departments
caricato So che avrei dovuto scrivere Include
per ogni oggetto da caricare in modo che il codice SQL generato da EF dovrà join per selezionare lì oggetto per me
ma questo è il codice esistente
using (var dc = DataContext())
{
await dc.Auction
.Include("Department.Admin")
.Where(i => i.Id == id && i.AuctionStatus == AuctionStatus.Accepted).ToListAsync();
return await dc.ActiveAuction.
SingleOrDefaultAsync(i => i.Id == id);
}
I non so come funziona, ma questo codice funziona e il valore restituito ActiveAuctions
include tutti gli oggetti desiderati
Ho verificato l'esecuzione di SQL sul database e come previsto genera query separate.
Voglio una spiegazione per capire come è stato caricato ActiveAcutions
restituito con le altre entità menzionate !!?
È 'Categories.Admin' un refuso per' Department.Admin'? o hai rimosso 'Categorie' dall'oggetto' Auction' per abbreviare il codice? – Johan
dovrebbe essere Department.Admin Ho risolto che, Admin è un'altra entità esistente anche –
Grande, si consideri l'uso di inclusioni fortemente tipizzate (ad esempio '.Include (a => a.Department.Admin)'. Eviterà errori di ortografia/inclusione di oggetti che non esiste. – Johan