.net - SchoolContext 的以下树是否正确?
问题描述
假设我们有:
public class Student
{
public int StudentID { get; set; }
public string Name { get; set; }
}
public class Teacher
{
public int TeacherID { get; set; }
public string Name { get; set; }
}
public SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Teacher> Teachers { get; set; }
}
将其理解为以下树是否正确?
SchoolContext
|
|__ DbSet<Student>
| |__ An entry1 (includes an Student entity, original values, current values, state of the entity)
| |__ An entry2 (includes an Student entity, original values, current values, state of the entity)
| |__ ...
|
|__ DbSet<Teacher>
|__ An entry1 (includes an Teacher entity, original values, current values, state of the entity)
|__ An entry2 (includes an Teacher entity, original values, current values, state of the entity)
|__ ...
我所知道的:
Student 实体是 Student 类的一个实例。
原始值是我们获取数据后该实例的开始值,例如
.Find()
方法。当前值是我们修改后的值。
state告诉实体的当前状态。
解决方案
如果你想在学生老师之间建立关系,那么处理多对多的关系。示例 1 老师可以有很多学生,一个学生可以有很多老师,所以这将是多对多的关系。
这种情况下创建另一个类
class TeacherStudent
{
public int StudentID { get; set; }
public Student Student { get; set; }
public int TeacherID { get; set; }
public Teacher Teacher { get; set; }
}
public class Student
{
public int StudentID { get; set; }
public string Name { get; set; }
public List<TeacherStudent> TeacherStudents { get; set; }
}
public class Teacher
{
public int TeacherID { get; set; }
public string Name { get; set; }
public List<TeacherStudent> TeacherStudents { get; set; }
}
并在您的数据库上下文类中覆盖以下方法,因此 TeacherStudent 将成为 FK 关系。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<TeacherStudent>()
.HasKey(s => new { s.TeacherID, s.StudentID });
}
推荐阅读
- python - Networkx 绘图功能在 Jupyter 中不起作用
- vb.net - 如何扩展任意类型的List类
- angular - CanLoad 返回 true 但什么也不做
- c# - 我所有使用 FontAwesome 的 HTML 标签似乎都添加了 aria-hidden="true" 。这是怎么回事?
- c# - dotnet core IdentityModel 不会内省从第三方 IDaaS 发出的令牌
- mysql - 优化两个表的 SQL 查询
- html - 使用复选框过滤图像后,如何将图像放置在砌体布局的同一行中?
- python - 创建全局变量与在函数之间传递变量
- python - Python嵌套字典“无”在完成迭代时出现
- python - 如果 commands.dm_only() 返回 false,则捕获错误