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 之后加载。这样做一切正常。
我是开发西澳大学的新手。我正在尝试开发一个将信息存储在本地数据库中的应用程序。
我可以毫无问题地存储和获取信息,但我找不到如何处理关系。
我有:
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 之后加载。这样做一切正常。