【发布时间】:2025-12-15 03:30:02
【问题描述】:
我使用实体框架6,有两个实体:Category & Item,它们有一对多的关系,Item 实体有一个属性owner。
就是这样,我的要求是构建一个查询,结果包含所有类别,每个类别都包含一些所有者等于某个值的项目。
类别类:
public class Category {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; private set; }
public string Name { get; set; }
public int? PId { get; private set; }
[ForeignKey("PId")]
public Category Parent { get; set; }
public ICollection<Category> Subcategories { get; set; }
//[ForeignKey("CategoryId")]
public ICollection<Item> Items { get; set; }
public Category() {
Subcategories = new List<Category>();
Items = new List<DataItem>();
}
}
物品类别:
public class Item {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; private set; }
public string Name { get; set; }
public int Owner { get; set; }
public int CategoryId { get; set; }
[ForeignKey("CategoryId")]
public Category Category { get; set; }
}
例如,有一些测试数据如下:
结果需要包含 11 拥有的某些项目的所有这些类别。 如何进行此查询?
【问题讨论】:
-
在这种情况下,您可能需要使用左连接,例如:
Category.Id == Item.CategoryId && owner == 11。 -
你是对的,但我不知道如何为此编写 EF 代码。
-
浏览this msdn 文档,您将对如何使用 linq 左连接有基本的想法。
标签: c# sql entity-framework-6