У меня есть структура таблицы в MySql, настроенная с помощью внешних ключей:
Period {Id, Title}
Активность {Id, Title, PeriodId}
Resource {Id, FileName}
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
является правильным).
Есть идеи, что происходит?
EDIT
Кстати, это работает нормально, но я все еще заинтересован в тесте в приведенном выше коде.
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();
}