如何使用 Include 来包含与另一个实体无关的实体
How to use Include to include an Entity not related to another entity
我想通过构建嵌套的 json 对象来使用 WEB API。
我有两个实体 Class 和学生
我希望 JSON 输出看起来像这样的结构
[
{
"ClassId": 1,
"ClassName": "Class A",
"Students": [
{
"StudentId": 1,
"StudentName": "student 1"
},
{
"StudentId": 2,
"StudentName": "student 2"
}
]
},
{
"ClassId": 2,
"ClassName": "Class B",
"Students": [
{
"StudentId": 3,
"StudentName": "student 3"
},
{
"StudentId": 4,
"StudentName": "student 4"
}
]
}
]
我在尝试操作 class 数据中的学生数据时遇到问题。
我正在尝试这段代码,但它给了我一个错误。
public IQueryable<tbl_mosque> Gettbl_mosque()
{
var Classes = db
.Class
.Include("Students")
.Select(t => new Class
{
id = t.Id,
name = t.Name,
student = t.students.Select(p => new student
{
Id = p.id,
Name = p.Name
})
}).ToList();
return Classes;
}
你只需要
return db.Class.Include("Students").ToList();
Include
表示引擎应包含 Students
实现。
P.S。您应该在问题中提及错误和堆栈跟踪。
更新
如果相关(在域语义中)之间没有关系table,您可以使用 JOIN。
由于您有一对多关系,这可以帮助:
var classes = db.Classes.GroupJoin(db.Students, c => c.Id, s => s.ClassID,
(c, s) => new {Class = c, Students = s});
这里classes
是一个匿名类型的对象列表,由Class
对象组成并与他Students
相关联
我现在无法测试,但您可以按照以下方式加入他们:
var joined = classesList.Join(studentsList,
_class => _class.Id, _student => _student.ClassId,
(_class, _student) => new Class
{
id = _class.Id,
name = _class.Name,
student = new student
{
Id = _student.id,
Name = _student.Name
})
});
我想通过构建嵌套的 json 对象来使用 WEB API。
我有两个实体 Class 和学生
我希望 JSON 输出看起来像这样的结构
[
{
"ClassId": 1,
"ClassName": "Class A",
"Students": [
{
"StudentId": 1,
"StudentName": "student 1"
},
{
"StudentId": 2,
"StudentName": "student 2"
}
]
},
{
"ClassId": 2,
"ClassName": "Class B",
"Students": [
{
"StudentId": 3,
"StudentName": "student 3"
},
{
"StudentId": 4,
"StudentName": "student 4"
}
]
}
]
我在尝试操作 class 数据中的学生数据时遇到问题。
我正在尝试这段代码,但它给了我一个错误。
public IQueryable<tbl_mosque> Gettbl_mosque()
{
var Classes = db
.Class
.Include("Students")
.Select(t => new Class
{
id = t.Id,
name = t.Name,
student = t.students.Select(p => new student
{
Id = p.id,
Name = p.Name
})
}).ToList();
return Classes;
}
你只需要
return db.Class.Include("Students").ToList();
Include
表示引擎应包含 Students
实现。
P.S。您应该在问题中提及错误和堆栈跟踪。
更新
如果相关(在域语义中)之间没有关系table,您可以使用 JOIN。 由于您有一对多关系,这可以帮助:
var classes = db.Classes.GroupJoin(db.Students, c => c.Id, s => s.ClassID,
(c, s) => new {Class = c, Students = s});
这里classes
是一个匿名类型的对象列表,由Class
对象组成并与他Students
相关联
我现在无法测试,但您可以按照以下方式加入他们:
var joined = classesList.Join(studentsList,
_class => _class.Id, _student => _student.ClassId,
(_class, _student) => new Class
{
id = _class.Id,
name = _class.Name,
student = new student
{
Id = _student.id,
Name = _student.Name
})
});