那么多对多并没有进入.NET Core 3.0版本,可惜...
我知道如何使用连接实体来实现m:m,如以下示例所示:https://stackoverflow.com/a/53972658/980917
我的问题是关于模型类本身的。考虑学生和班级示例:
Student - has ICollection<StudentClass>
StudentClass - joining entity
Class - has ICollection<StudentClass>
这对于数据加载是很好的。但是,在您的业务逻辑中,StudentClasses集合没有用,因为它只是一个具有2个ID的连接实体。与学生或班级一起使用时,您实际上希望在学生中包含班级的实际集合和< 班中的strong>学生。 (即: Student.Classes 和 Class.Students 。
检索多对多集合(不加入实体)的当前推荐的方法/解决方法是什么?
我们是否必须基于加入实体进行第二次选择,还是有一些更优雅的选择?
一个简单的例子或链接会很棒。谢谢。
答案 0 :(得分:1)
当前推荐的检索多对多集合(不加入实体)的方法/解决方法是什么?
您可以使用.Include
扩展方法轻松完成以下操作:
让我们说您的Student
类如下:
public class Student
{
public int Id {get; set;}
public string StudentName {get; set;}
public ICollection<StudentClass> StudentClasses {get; set;}
}
要检索所有具有相关班级的学生,
var studentsWithClasses = _context.Students.Include(s => s.StudentClasses).ToList();
要检索单个学生及其班级:
var studentWithClasses = _context.Students.Where(s => s.Id = studentId).Include(s => s.StudentClasses).FirstOrDefault();