Как перейти на следующий уровень ассоциации в EF4 EntityDataSource? - PullRequest
0 голосов
/ 03 марта 2011

Я использовал 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, почти то, что вы ожидаете.

1 Ответ

1 голос
/ 03 марта 2011

Попробуйте изменить Include="Complaint, Status" на Include="Complaint, Complaint.Status" в вашем EntityDataSource

...