实体框架中的外键关系

时间:2010-05-24 10:38:42

标签: entity-framework

我正在尝试添加从实体数据模型类创建的对象。我有一个名为Users的表,它已变成User EDM类。而且我还有一个表格页面,它已成为Page EDM课程。这些表具有外键关系,因此每个页面都与许多用户相关联。现在我希望能够添加页面,但我无法理解如何做到这一点。我在下面的用户上获得了nullreference异常。我仍然对这一切感到困惑,所以我确定这是一个简单的错误,但我只是看不出怎么做。

另外,顺便说一句,编译器要求我在对象初始化程序中设置PageID,即使该字段在表中设置为自动id。我这样做只是将它设置为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 个答案:

答案 0 :(得分:1)

尝试:

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

关于这个:

  

另外,顺便说一句,编译器要求我在对象初始值设定项中设置PageID

那不应该是真的。什么是确切的错误消息?另外,ID的类型是什么?