我的项目禁用了LazyLoading。我想获得具有类别导航属性的Id = 1的Product。但我只需要类别的Id和Name属性。这就是为什么我希望类别导航属性只有这两个字段。是否可以创建这样的查询?
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; }
}
如果您只需要几个特定字段,则需要明确选择它们。像这样的东西会起作用:
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
}
}
拥有仅具有两个字段的Product和Category模型类可能更好。现在,您的方法将返回一个Category对象,该对象缺少调用者可能不期望的大多数字段的值。取决于你究竟在做什么。