Я использовал EF4 EntityDataSources для успешного связывания данных, но вот случай, когда я озадачен:
Таблица «CurrentComplaintsByUsers» имеет внешний ключ для таблицы «Жалобы». Поэтому в EF я могу получить доступ к записи CurrentComplaintByUser и перейти к ее родительской жалобе, например, так:
var ccU = dataContext.CurrentComplaintsByUsers.First();
var parentComplaint = ccU.Complaint;
Когда я использую EntityDataSource на основе CurrentComplaintsByUsers для привязки вида сетки, я хочу перейти от объекта «Жалоба» к Ассоциации жалоб, называемой «Статус». Вот StatusID в моей таблице Жалоб, и поэтому в коде я могу получить такой же статус жалобы, включая свойства Status:
string statusLabel = parentComplaint.Status.LabelText;
СБОЙ: Когда я пытаюсь запечь все это в EntityDataSource, я не могу перейти от моего начального элемента "CurrentComplaintsByUsers" к "Status". Вот моя ЭЦП:
<asp:EntityDataSource ID="edsCurrentCases" runat="server"
ConnectionString="name=EOCaseDataModel" DefaultContainerName="EOCaseDataModel"
EnableFlattening="False" EntitySetName="CurrentComplaintsByUsers"
Include="Complaint, Status">
</asp:EntityDataSource>
Моя ошибка такова:
System.InvalidOperationException
"A specified Include path is not valid.
The EntityType 'EOCaseApp.CurrentComplaintsByUser' does not declare a navigation property with the name 'Status'."
Я пытаюсь добраться до точки, где это работает в моем Gridview:
<%# ((CurrentComplaintsByUser)Container.DataItem).Complaint.Status.LabelText %>
Итак, с использованием только десятичной разметки , как мне получить ассоциации связанных объектов из EDS? (я могу сделать это в коде, просто пытаясь использовать EDS исключительно тогда, когда могу)
Другие примечания: если я удаляю «Состояние» из «Включить» в EDS, то я получаю НЕДЕЙСТВИТЕЛЬНУЮ ОШИБКУ, когда она достигает ..Complaint.Status.LabelText в моем Gridview, почти то, что вы ожидаете.