MVC中的关系

时间:2017-07-13 17:12:36

标签: c# asp.net-mvc entity-framework

我试图访问我在模型中完成关系的变量:

// Threads
public class Thread
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }

    public int NumberOfMessages { get; set; }

    public int ViewCount { get; set; }

    public string[] Tags { get; set; }

    public DateTime LastEdited { get; set; }

    public int Vote { get; set; }

    // Other model relations
    public virtual ICollection<Message> Messages { get; set; }
    public virtual Group Group { get; set; }
    public virtual ForumUser User { get; set; }
}

我试图向数据库添加消息并在消息列表中引用它

                thread.Group.Id = groupId;

它给了我一个NULL引用异常。我现在真的知道这是如何运作的。

我将展示另一个可能更多解释的例子

`               // Saving the message in the database
                forumDb.Messages.Add(block);
                forumDb.Threads.Find(threadId).Messages.Add(block);
                forumDb.SaveChanges();
            }`

如果我做错了一个例子,那么最后一个例子的模型是相同的

1 个答案:

答案 0 :(得分:0)

根据您提供的信息,您似乎没有初始化线程的Group属性。

创建对象时,不会初始化它的属性。由于您尝试访问未初始化的Group对象的id属性,因此会获得空引用异常。

要解决您的问题,您可以这样做:

thread.Group = new Group(); // First initialize the group
thread.Group.Id = groupId;  // Set the id of the newly created Group object.