Поле или свойство с именем не найдено в выбранном источнике данных - PullRequest
6 голосов
/ 15 апреля 2011

У меня есть модель данных сущностей с двумя сущностями в ней: «Роли» и «Пользователи». Есть свойство навигации от меня EntityDataSource и GridView. EntityDataSource указывает на сущность Users и имеет параметр Include = "Roles".

Я добавил BoundField в GridView, который указывает на RoleName, свойство ролей сущности. Однако, когда я выполняю код, я получаю вышеуказанную ошибку.

Я успешно использовал очень похожий код в другом приложении. Есть идеи, почему это не работает?

Вот мой EntityDataSource:

    <asp:EntityDataSource ID="EntityDataSource1" runat="server" 
    ConnectionString="name=pbu_checklistEntities" 
    DefaultContainerName="pbu_checklistEntities" EnableDelete="True" 
    EnableFlattening="False" EnableUpdate="True" EntitySetName="Users" Include="Role">
    </asp:EntityDataSource>

А вот и BoundField:

<asp:BoundField DataField="RoleName" HeaderText="Role" SortExpression="RoleName" />

1 Ответ

20 голосов
/ 15 апреля 2011

Вы не можете использовать asp:BoundField для свойства связанного свойства навигации. Вы можете использовать только asp:TemplateField, а затем связать его только для чтения с Eval (, а не Bind). BoundFields всегда использует Bind для внутреннего использования, поэтому он не работает. Я сам должен был это понять некоторое время назад:

Столбцы двух связанных таблиц базы данных в одном ASP.NET GridView с EntityDataSource

...