Universal Windows App 10 - EF7 SQLite 一对多关系

Universal Windows App 10 - EF7 SQLite One-to-many relationship

我是开发西澳大学的新手。我正在尝试开发一个将信息存储在本地数据库中的应用程序。

我可以毫无问题地存储和获取信息,但我找不到如何处理关系。

我有:

public class ToDoItem
{
    public int ToDoItemId
    {
        get; set;
    }

    public int ToDoItemCategoryId
    {
        get; set;
    }

    public virtual ToDoItemCategory ToDoItemCategory
    {
        get; set;
    }

    [Required]
    public string Description
    {
        get; set;
    }
}

并且:

public class ToDoItemCategory
{
    public int ToDoItemCategoryId
    {
        get; set;
    }

    public virtual ICollection<ToDoItem> ToDoItems
    {
        get; set;
    }

    [Required]
    public string Name
    {
        get; set;
    }
}

而且,我以这种方式保存信息:

       using (var db = new DatabaseContext())
       {
                var cat = db.ToDoItemCategories.Single(m => m.ToDoItemCategoryId == SelectedCategory.ToDoItemCategoryId);
                ToDoItem model = new ToDoItem() { Description = description, ToDoItemCategory = cat };
                db.ToDoItems.Add(model);
                db.SaveChanges();
       }

但 ToDoItems 不会保存到 ToDoItemCategory ToDoItems 列表中。另外,ToDoItemId 是用负 ID 自动生成的,我不明白为什么。

我也试过类似的东西:

    using (var db = new DatabaseContext())
    {
                var cat = db.ToDoItemCategories.Single(m => m.ToDoItemCategoryId == SelectedCategory.ToDoItemCategoryId);
                ToDoItem model = new ToDoItem() { Description = description, ToDoItemCategory = cat };
                db.ToDoItems.Add(model);
                cat.ToDoItems.Add(model);
                db.SaveChanges();
    }

但运气不好。我在这里做错了什么?

经过大量测试和搜索后,我找到了解决此问题的方法。

 Categories = Context.ToDoItemCategories.Where(predicate).Include(m => m.ToDoItems).ToList();

显然,导航属性仅在 Include 之后加载。这样做一切正常。