Поиск внешнего ключа Dropdownlist EF 6

asp.net drop-down-menu entity-framework entity-framework-6 webforms

Вопрос

Я работаю в поисковых системах в течение 3 дней и не могу найти полезный ответ, я надеюсь, что кто-то может мне помочь.

Я начинаю с этого ОТЛИЧНОГО учебника:

http://www.asp.net/web-forms/tutorials/data-access/model-binding/retrieving-data

Я пытаюсь расширить этот проект, чтобы «Академический год» стал искать другую таблицу в базе данных, а не перечислять. Я удивлен, как трудно найти пример, иллюстрирующий это с использованием полей .net 4.5, VS 2013, EF 6 и Dynamic.

Итак, вот что я сделал:

1) Добавлена ​​новая таблица под названием «Годы» в базу данных (YearID tinyint PK, YearName varchar). Занесена эта таблица с возможными значениями.

2) Переименовал поле в «Студенты с года в год» для согласованности, я изменил его на tinyint, создал отношения между Students.YearID и Years.YearID

3) Изменен SchoolContext, чтобы включить новую таблицу:

public DbSet<Year> Years { get; set; }

4) Добавлен класс Year следующим образом:

public DbSet<Year> Years { get; set; }

5) Убрали материал учебного года из класса Студента и заменены следующими строками:

public DbSet<Year> Years { get; set; }

6) Изменено поле в форме, чтобы показать недавно связанный идентификатор YearID:

public DbSet<Year> Years { get; set; }

(Наконец) проблема: YearID показывает как текстовое поле, а не раскрывающийся список, и я не могу понять, как это исправить. Он работал нормально, когда он был перечислением, но не был хорошим, как поиск. Когда он был определен как перечисление, у него была эта аннотация:

public DbSet<Year> Years { get; set; }

Есть ли аналогичная аннотация, необходимая для того, чтобы сообщить Dynamic control получить данные из таблицы Years? Насколько мне известно, все это очень загадочно и недокументировано.

Я где-то читал, что вы должны использовать имя связанного поля, а не что бы то ни было, поэтому я изменил DataField на поле Dymanic на «Year», а не на «YearID». Когда я это делаю, элемент управления отображается с помощью «System.Data.Entity.DynamicProxies.Year_9D4E99 .........».

Конечно, мой файл ForeignKey_Edit.ascx остается по умолчанию, чтобы показать выпадающий список.

Надеюсь, я пропустил нечто сверхъестественное здесь.

благодаря

Принятый ответ

Для инфраструктуры сущностей 6 вам необходимо установить «поставщик динамических данных для EF6»: [http://blogs.msdn.com/b/webdev/archive/2014/02/28/announcing-the-release-of-dynamic- данные-провайдера и-EntityDataSource-контроль-для-объекта-рамки-6.aspx] [1]

В консоли консоли Package-Manager выполните:

Install-Package Microsoft.AspNet.DynamicData.EFProvider -Version 6.0.0

Зарегистрируйте модель в global.asax.cs для динамических данных

Install-Package Microsoft.AspNet.DynamicData.EFProvider -Version 6.0.0

В Students.aspx вам нужно будет использовать навигационное поле с идентификатором:

Install-Package Microsoft.AspNet.DynamicData.EFProvider -Version 6.0.0

Добавьте это в student.aspx.cs

Install-Package Microsoft.AspNet.DynamicData.EFProvider -Version 6.0.0

Вам нужно будет добавить этот метод на каждую страницу с помощью gridview или formview, который содержит навигационные поля.




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему