2012-02-01 5 views
1

У меня есть несколько проблем, но я собираюсь начать с первого и самого маленького. У меня две модели со многими отношениями, категориями и проектами. В каждой модели у меня есть ICollection другой модели. Я инициализирую коллекцию как новый HashSet() для конструктора проекта и наоборот для категории. Я читал в Интернете, что это создаст новую таблицу в вашей базе данных с ПК каждой модели в качестве ПК в новой таблице. Я по-своему назвал их и еще кое-что из Fluent API, но вы поняли эту идею.ASP.NET MVC Entity Framework CodeFirst Многие для многих (CRUD)

Это получилось отлично. Поэтому я создаю свои контроллеры и создаю и использую строительные леса для создания представлений CRUD. Я создаю несколько категорий. Отлично. Теперь, когда я прихожу к созданию нового проекта, я хочу, чтобы он показывал мне список ранее созданных категорий и требовал, чтобы по крайней мере один был выбран, прежде чем пропустить проект. В представлении не отображаются категории, которые нужно выбрать вообще, и позволяет ему проходить через нуль. Я знаю, как сделать требуемое свойство, но я не знаю, как сделать требуемое свойство коллекции и захватить все категории из базы данных для представления в представлении создания проекта для выбора ....

+0

Вы сделали включение в свой навигационный объект? –

+0

Нет, нет. Где бы я это сказал? –

ответ

2

Попытка:

Context.Project.Include(p=>p.Category) 

внутри кода запроса,

вам нужно будет

using System.Data.Entity; 

получить включают метод

+0

Это сработало. Потрясающие. Благодаря! –

+1

Нет проблем, причина в том, что это необходимо из-за того, что EF не поддерживает ленивую загрузку, поэтому на самом деле он загружает только ссылки FK, когда вы явно говорите об этом –

0

Для обеспечения ленивой нагрузки вам также необходимо будет пометить ваши свойства как «виртуальные»; в противном случае вам всегда нужно будет загружать их с помощью метода .Include().

Смежные вопросы