我有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