首页 > 解决方案 > 实体框架模型上同一个表的两个外键元素?

问题描述

我正在尝试使用 Entity Framework 创建一个数据库表,该表将有两列,一列用于Person,另一列用于Person。换句话说,将有两个外键,每个外键都指向同一张表上的两条不同的记录。

最接近我的情况的一个问题写得不好,也没有答案。StackOverflow 和其他地方的大多数问题都涉及许多多条记录的集合。在我的情况下,我需要知道如何为模型上的同一张表设置两个外键。

这对我来说看起来不对,Visual Studio 也不喜欢它,因为代码引用了 Person 两次。

public class Lesson
{
    [Key]
    public int LessonId { get; set; }

    [ForeignKey("Person")]
    [Column(Order = 0)]
    public string studentId { get; set; } 
    public Person Person { get; set; }

    [ForeignKey("Person")]
    [Column(Order = 1)]
    public string teacherId { get; set; }
    public Person Person { get; set; }
}

你觉得这合适吗?我试图解决错误的问题吗?...或者,更好的是,是否有一些语法可以使这项工作?

标签: sql-serverentity-frameworkentity-framework-6

解决方案


你觉得这合适吗?

不。试试类似的东西:

public class Lesson
{
    [Key]
    public int LessonId { get; set; }

    [ForeignKey("Student")]
    public string StudentId { get; set; } 
    public Person Student { get; set; }

    [ForeignKey("Teacher")]
    public string TeacherId { get; set; }
    public Person Teacher{ get; set; }

}

推荐阅读