我有MySQL中的表结构,建立与外键:LINQ到实体返回错误ID为实体的孩子的孩子
期限{ID,标题}
活动{ID,标题, PeriodId}
资源{ID,文件名}
ActivityResources {ActivityId,RESOURCEID}
这是与LINQ-to-Entities一起建立的,我检查了表映射是正确的,包含了多对多的关系。通常情况下,所有类都可以使用Period
,Activity
和Resource
类。
不过,我想使用此代码:
private string ListAttachments(Ctx ctx) {
var resList = new StringBuilder();
var p = ctx.Periods.Include("Activities.Resources").Single(o => o.Id == 1);
foreach (var a in p.Activities) foreach (var r in a.Resources)
resList.Append(r.Id).Append(" - ").Append(r.FileName);
return resList.ToString();
}
但它不写Resource.Id
的预期每个资源;由于某种原因,它写入Activity.Id
而不是(虽然FileName
是正确的)。
任何想法是怎么回事?
编辑
顺便说一句,这工作得很好 - 但我仍然有兴趣在上面的代码probem。
private string ListAttachments(Ctx ctx) {
var resList = new StringBuilder();
var res = ctx.Resources.Where(r => r.LessonActivities.Any(l => l.LessonId == 1)).ToList();
foreach (var r in res) resList.Append(r.Id).Append(" - ").Append(r.FileName);
return resList.ToString();
}
所以,它是写activity.id而不是resource.id? – ivowiblo