一些背景:我继承了数据库。其他应用程序正在运行,因此我无法更改结构。我们有一张员工表和一份活动表。一些员工是主管,活动可以选择指定一名主管,表明只有特定的主管才能让其员工参与该特定活动。
数据库的设置方式是,如果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尝试做的事情?
答案 0 :(得分:0)
不,你不能那样做。
直到EF6,在1侧使用AK(备用键)无法建立1对多的关系。 1面必须始终是父表中的PK。
MS有一个网站,您可以在其中投票选择新的EF功能,这通常是最受欢迎的功能之一:Unique Constraint (i.e. Candidate Key) Support
如果您愿意,可以vote for it here。