LazyLoading è disabilitato sul mio progetto. Voglio ottenere il prodotto che è Id = 1 con la proprietà di navigazione di categoria di esso. Ma ho bisogno solo delle proprietà Id e Name della categoria. Ecco perché voglio che la proprietà di navigazione Category abbia solo questi due campi. È possibile creare una query di questo tipo?
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public dobule Price{ get; set; }
public string Description { get; set; }
public bool IsDeleted { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }
public int CategoryId{ get; set; }
public Category Category{ get; set; }
}
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public dobule Description{ get; set; }
public Category IsDeleted { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
Se desideri solo alcuni campi specifici, dovrai selezionarli esplicitamente. Qualcosa del genere funzionerebbe:
dbContext.Products
.Select(p => new Product
{
Id = p.Id,
Name = p.Name,
// etc... The fields you need from product go here
Category = new Category
{
Id = p.Category.Id,
Name = p.Category.Name
}
}
Potrebbe essere meglio avere una classe di modello Prodotto e Categoria che abbia solo i due campi. Ora il tuo metodo restituirebbe un oggetto Category che non ha valori per la maggior parte dei campi che il chiamante potrebbe non aspettarsi. Dipende da cosa stai facendo esattamente.