EF Core,将关系读取到集合中,反之亦然

本文关键字:集合 反之亦然 关系 Core EF 读取 | 更新日期: 2023-09-27 18:02:53

我是EF的初学者,所以如果问题很简单,请提前道歉。

得到了一个与关系数据的uwp项目,我正试图使用EF-core实现DB访问。数据是这样的-

class Class1
{
  public int Id {get; set; }
  public KeyedCollection<int, Class2> {get; set; }
  properties..
}
class Class2
{
  public int Id {get; set; }
  [ForeignKey("Class1ForeignKey")]
  public Class1 class1 { get; set; }
  public KeyedCollection<int, Class3> {get; set; }
  properties..
}
class class3
{
  public int Id {get; set; }
 [ForeignKey("Class2ForeignKey")]
  public Class2 class2 { get; set; }
  properties..
}

*在KeyedCollection中的int是我用来方便访问的索引(我实际上不需要保存它,它被保存为项目的一部分)。

这是我的理解,我不能在当前的类结构中进行到DB的关系。我想我可以在类中添加另一个列表,然后在save/load中使用它。

但我想知道-是否有可能手动保存/加载到集合中,维护r/ship,而没有类中的实际列表对象/属性?

我试着玩FluentAPI和重写OnModelCreating(如https://docs.efproject.net/en/latest/modeling/relationships.html所示),但没有骰子-我得到一个丢失属性的投诉

EF Core,将关系读取到集合中,反之亦然

回答我自己的问题。

A r/ship要求:

  • 一个集合,就像Suichiro提到的。KeyedCollection实现了它,所以没问题。
  • 一个ForeignKey标签(编辑我的原始帖子以提供一个例子)。似乎它可以是可选的,但我没有尝试过。
  • Include(s) on load-

    db.Class1List。包括(c1 => c1. class2col)。ThenInclude(c2 => c2. class3col). list ();

一旦我修复了这些,瞧,