Le LazyLoading est désactivé sur mon projet. Je veux obtenir le produit qui est Id = 1 avec la propriété de navigation de catégorie de celui-ci. Mais je n'ai besoin que des propriétés Id et Name de la catégorie. C'est pourquoi je souhaite que la propriété de navigation Catégorie contienne uniquement ces deux champs. Est-il possible de créer une telle requête?
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; }
}
Si vous ne voulez que quelques champs spécifiques, vous devrez les sélectionner explicitement. Quelque chose comme ça marcherait:
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
}
}
Il peut être préférable d’avoir une classe de modèle Product et Category qui ne contient que les deux champs. Désormais, votre méthode renverrait un objet Category ne contenant pas de valeurs pour la plupart des champs que l'appelant ne pouvait pas s'attendre. Cela dépend de ce que vous faites exactement.