LazyLoading ist in meinem Projekt deaktiviert. Ich möchte ein Produkt, das Id = 1 ist, mit der Kategorie-Navigationseigenschaft davon erhalten. Aber ich brauche nur Id- und Name-Eigenschaften von Category. Aus diesem Grund möchte ich, dass die Category-Navigation-Eigenschaft nur diese beiden Felder enthält. Kann eine solche Abfrage erstellt werden?
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; }
}
Wenn Sie nur einige bestimmte Felder wünschen, müssen Sie sie explizit auswählen. So etwas würde funktionieren:
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
}
}
Es ist möglicherweise besser, eine Produkt- und Kategoriemodellklasse zu haben, die nur die beiden Felder enthält. Nun würde Ihre Methode ein Category-Objekt zurückgeben, dem Werte für die meisten Felder fehlen, die der Aufrufer möglicherweise nicht erwartet. Kommt drauf an was genau du tust.