Отношения внешнего ключа в Entity Framework - PullRequest
0 голосов
/ 24 мая 2010

Я пытаюсь добавить объект, созданный из классов Entity Data Model. У меня есть таблица с именем Users, которая превратилась в класс EDM пользователя. И у меня также есть таблица Pages, которая стала классом Page EDM. Эти таблицы имеют отношение внешнего ключа, поэтому каждая страница связана со многими пользователями. Теперь я хочу добавить страницу, но не могу понять, как это сделать. Я получаю исключение нулевой ссылки на пользователей ниже. Я все еще довольно смущен всем этим, так что я уверен, что это простая ошибка, но я просто не понимаю, как это сделать.

Кроме того, кстати, компилятор требует, чтобы я установил PageID в инициализаторе объекта, даже если это поле установлено как автоматический идентификатор в таблице. Я делаю это правильно, просто устанавливая его в 0, ожидая, что он будет автоматически обновляться в таблице при сохранении, или как мне это сделать?

Любая помощь приветствуется!

Рассматриваемый метод:

private Page GetPage(User currentUser)
{
   string url = _request.ServerVariables["url"].ToLower();
   var userPages = from p in _context.PageSet
                     where p.Users.UserID == currentUser.UserID
                     select p;
   var existingPage = userPages.FirstOrDefault(e => e.Url == url);

   if (existingPage != null)
      return existingPage;

   Page page = new Page()
                   {
                      Count = 0,
                      Url = _request.ServerVariables["url"].ToLower(),
                      PageID = 0, //Only initial value, changed later?
                   };

   _context.AddToPageSet(page);
   page.Users.UserID = currentUser.UserID; //Here's the problem...
   return page;
}

1 Ответ

1 голос
/ 24 мая 2010

Попробуйте:

page.Users = _context.Users.First(u => u.UserId == currentUser.UserID);

Относительно этого:

Также, кстати, компилятор требует, чтобы я установил PageID в инициализаторе объекта

Это не должно быть правдой. Какое точное сообщение об ошибке? Кроме того, какой тип идентификатора?

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