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

У меня есть две таблицы SQL Server с первичными ключами (PK) и внешний ключ (FK), связывающий две таблицы:

1) Table "Order" OrderID, int, PK AddressID, int, FK ... 2) Table "Address" AddressID, int, PK City, nvarchar(50) ... 

Затем я создал (ADO.NET) Entity Data Model из этих двух таблиц. Теперь на моей (ASP.NET) веб-странице я поставил GridView с EntityDataSource. В моем GridView я хочу отобразить два столбца:

  • Номер заказа
  • Город (принадлежащий этому заказу и связанный с помощью ключа AddressID)

Как я могу это сделать? Моя проблема: когда я настраиваю источник данных сущностей, я могу выбрать «EntitySetName», которое может быть либо «Заказ», либо «Адрес», но не оба, и я не могу выбрать какие-либо отношения. Если я выберу «Заказ» в качестве EntitySetName, то в GridView я могу добавить столбцы

  • Номер заказа
  • Адрес
  • Address.AddressID

Добавление столбца «Адрес» отображает пустые ячейки. Добавление «OrderID» и «Address.AddressID» отображает ожидаемые идентификаторы. Но как я могу добавить «Город» связанного адреса в свой GridView?

Благодарим вас за помощь!

Изменить: Уточнение:

Entity Framework создал class «Заказ» и class «Адрес», соответствующий таблицам базы данных. Класс «Заказ» имеет ссылку на объект «Адрес» в качестве свойства навигации, соответствующий 1-n отношениям между таблицей адресов и заказов.

В принципе, я хочу иметь столбец в моем GridView, который отображает Order.Address.City. Я попытался добавить связанное поле с «Address.City» в качестве поля данных в GridView, но это приводит к ошибке времени выполнения («нет такого свойства …»).

Хорошо, слишком много часов спустя я нашел решение самостоятельно:

Опция 1:

В свойстве EntityDataSource можно использовать свойство select, которое позволяет создавать произвольные проекции данных из нескольких связанных объектов / таблиц базы данных (в моем случае: OrderID из объекта Order и City из объекта Address)

Недостаток: использование select в EntityDataSource делает невозможным использование Insert, Update и Delete в GridView!

Вариант 2:

EntityDataSource должен иметь свойство include для включения связанного свойства адреса вместе с запрошенными заказами. Разметка выглядит так:

   

Тогда коллекция столбцов GridView может иметь поле шаблона, подобное этому:

       

Здесь Эваль важен. Привязка не работает. Также используя BoundField в качестве столбца …

  

НЕВОЗМОЖНО . Поэтому в GridView невозможно редактировать город (что имеет смысл, потому что его связанная область принадлежит другой таблице и, возможно, ко многим другим заказам). Но можно редактировать плоские поля объекта заказа, а также «AddressID» для заказа другого адреса.

  • Условно скрыть CommandField или ButtonField в Gridview
  • Полная обратная передача, вызванная LinkButton внутри GridView внутри UpdatePanel
  • GridView - отображать заголовки на пустом источнике данных
  • Лучший способ сделать сортировку WPF ListView / GridView при нажатии на заголовок столбца?
  • Преобразование DBContext в ObjectContext для использования с GridView
  • Изменение цвета ячейки на разные значения - Gridview
  • Пересечение столбцов GridLayoutManager Android Recyclerview
  • Простой пример сетки Android, использующий RecyclerView с GridLayoutManager (например, старый GridView)
  • Сортировка GridView: SortDirection всегда по возрастанию
  • Экспорт GridView в несколько листов Excel
  • Как скрыть столбец (GridView), но все же получить доступ к его значению?
  • Interesting Posts

    Строка XSLT concat, удалите последнюю запятую

    Операции с дисками заморожены Debian

    Почему этот общий код компилируется в java 8?

    Самый простой способ удалить двунаправленные рекурсивные отношения?

    Отключить ярлык жесткого диска Touch Charm

    Как восстановить RAID 0 на моем ноутбуке DELL?

    Ubuntu на VirtualBox может отображать разрешение 800×600 – как его изменить?

    Прикрепленное меню «Пуск» / «Ярлыки» панели задач исчезли

    Определите, является ли Office 32-битным или 64-битным через реестр

    Является ли это правильным способом использования Java 2D Graphics API?

    Как совместить class и идентификатор в селекторе CSS?

    как обрезать ведущие нули из буквенно-цифрового текста в функции mysql

    «Непринятая ошибка: » с угловым после развертывания

    Последняя непустая ячейка (столбец) в данной строке; Excel VBA

    Изображение, сохраненное на SD-карте, не отображается в приложении «Галерея Android»

    Давайте будем гением компьютера.