【问题标题】:Entity Framework Core : one-to-many relationships实体框架核心:一对多关系
【发布时间】:2021-08-27 10:41:11
【问题描述】:

目前正在学习 Entity Framework Core 并希望得到一些帮助,因为我已经被困了一段时间。

我有一组模型:

  • 用户(用户名、电子邮件、姓名等)
  • 学生(每个学生与用户是一对一的关系,这只是为了便于阅读)

这是难倒我的部分:

  • 学校 - 每所学校都有一个管理员(用户)、一个名称和一个班级集合/列表。
  • 学校班级 - 有一名教师(用户)和学生的集合/列表。

我遇到的问题是如何设置这些模型并创建一个新模型,而不必在创建过程中将整个用户对象传递给班级/学校?例如。我的模型可能看起来像

class School 
{
    [Required]
    public string id {get; set;} 

    [Required]
    public User Admin {get; set;}

    [Required]
    public List<Student> Students {get; set;}

    [Required]
    public List<SchoolClass> Classes {get; set;}
}

(请注意,为了这个问题,这只是快速放在一起)

如果被问到,我可以提供更多细节,但我觉得我目前的整个方法有点错误。

基本上每当我添加一个用户时,我应该能够添加一个学生(可选),然后我应该能够创建学校,但理想情况下我不想获取/传递整个用户对象/列表最初创建学校时的课程->例如,我只想传递用户的 ID 作为管理员。

然后当我创建SchoolClass 时,它不需要创建新用户,我应该能够添加当前用户。不完全确定该去哪里。

【问题讨论】:

    标签: c# asp.net-core .net-core


    【解决方案1】:

    您可以使用空运算符 (?) 将其设为可空

    public User? Admin {get; set;}

    当您进行数据库调用时,您会将 Admin User 对象添加到 School 对象。但是,它不会将整个对象添加到数据库中。它只会更新 School 表中的外键,除非您明确这样做,否则不会将 Admin 标记为修改。

    另外请注意,属性正逐渐被 Fluent API 淘汰。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 2021-02-15
      • 1970-01-01
      • 2020-07-08
      相关资源
      最近更新 更多