我是开发西澳大学的新手。我正在尝试开发一个将信息存储在本地数据库中的应用程序。
我可以毫无问题地存储和获取信息,但我找不到如何处理关系。
我有:
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();
}
但没有运气。我在这做错了什么?
答案 0 :(得分:1)
经过测试和搜索后,我找到了解决这个问题的方法。
Categories = Context.ToDoItemCategories.Where(predicate).Include(m => m.ToDoItems).ToList();
显然导航属性仅在包含后加载。这样做一切正常。