ASP.Net Entity Framework - PullRequest
       10

ASP.Net Entity Framework

0 голосов
/ 15 февраля 2009

Я просто пробую среду ASP.Net Entity, когда я впервые пытаюсь использовать среду ORM, поэтому будьте терпеливы, если я лаю не на том дереве.

Чтобы упростить задачу, я получил следующие 2 таблицы

Календарь

CalendarID Идентификатор пользователя Дата EventName

Пользователи

UserId Имя пользователя

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

<% = calendarEntry.DateAdded%>

Однако, если я тогда попробую использовать

> <% = calendarEntry.Users.Username%>: <% = calendarEntry.DataAdded%>

Он сбрасывается при вызове calendarEntry.Users, так как говорит, что он нулевой. Почему структура сущности не изучает детали использования? Нужно ли что-то менять в конструкторе моделей?

Если это помогает, код в контроллере MVC, который отправляет данные в представление, выглядит следующим образом

var Entities = new UnityGamersEntities (); возврат Просмотр (Entities.Calendar);

Действительно надеюсь, что это имеет смысл.

Ответы [ 3 ]

1 голос
/ 16 февраля 2009

для тех, кто заинтересован, я решил эту проблему, используя следующий код

        UnityGamersEntities db2 = new UnityGamersEntities();
        ObjectQuery<GameCalendar> gc = db2.GameCalendar.Include("GameTitles");

Похоже, что для структуры сущностей не хватает учебных пособий, если только вы не хотите работать только с одиночными таблицами, мне было очень сложно найти нужную информацию.

надеюсь, это изменится в ближайшие месяцы.

1 голос
/ 06 марта 2009

Гав

Есть еще один способ получить Linq to Entities для заполнения таблицы пользователей.

У каждого внешнего ключа и коллекции есть метод «Загрузка», который отправляется в базу данных и, в вашем случае, получает список пользователей, связанных с текущим календарем, и заполняет коллекцию. Это как ленивая загрузка.

Если вы добавите эту строку, она должна работать:

<!-- Load up Users unless it's already Loaded -->
<% if(!calendarEntry.Users.IsLoaded) calendarEntry.Users.Load(); %>

<!-- Your Line -->
<%= calendarEntry.Users.Username%> : <%= calendarEntry.DataAdded %>

Надеюсь, это поможет.

PS - Я слышал вас об отсутствии документации

Хитрый

0 голосов
/ 16 февраля 2009

Вы должны указать платформе сущности загрузить пользователей для календаря.

Вы можете сделать это через запрос LINQ, просто:

Calendar cal = (from c in Calendar
    where c.CalendarID.Equals(input)
    select new 
    {
        c,
        c.Users
    }).FirstOrDefault().c;

Что говорит, загрузи календарь и всех его пользователей.

РЕДАКТИРОВАТЬ: вероятно, есть другие способы загрузки пользователей, это просто способ LINQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...