将可选映射到实体框架中的多个关系

时间:2014-06-06 20:18:37

标签: c# entity-framework

一些背景:我继承了数据库。其他应用程序正在运行,因此我无法更改结构。我们有一张员工表和一份活动表。一些员工是主管,活动可以选择指定一名主管,表明只有特定的主管才能让其员工参与该特定活动。

数据库的设置方式是,如果SupID字段不为空且员工是活动所引用的SUID列所在的字段,则员工是主管。

以下是我正在使用的课程样本:

public class Emp
{
    public int EmpID { get; set; }
    public string Fname { get; set; }
    public string Lname { get; set; }
    public int SupID { get; set; }
    public virtual ICollection<Activity> SupervisedActivities { get; set; }
}

public class Activity
{
    [Key]
    public string ActNum { get; set; }
    public int SupID { get; set; }
    public virtual Emp Supervisor { get; set; }
}

我遇到的问题是无论我如何映射这两个类之间的关系,EF都希望将Activity上的SupID与EmpID上的EmpID相关联,而不是SupID。是否有可能在没有修改数据库的情况下做我在EF尝试做的事情?

1 个答案:

答案 0 :(得分:0)

不,你不能那样做。

直到EF6,在1侧使用AK(备用键)无法建立1对多的关系。 1面必须始终是父表中的PK。

MS有一个网站,您可以在其中投票选择新的EF功能,这通常是最受欢迎的功能之一:Unique Constraint (i.e. Candidate Key) Support

如果您愿意,可以vote for it here