我有一个数据库,我控制其中一部分并且无法控制另一部分。我想用EF来访问这两个部分,但是我很难宣布一些关系。考虑以下两个实体:
public class AnswerSet {
public AnswerSet() { WeeklyAnswerSets=new HashSet<WeeklyAnswerSet>(); }
public int Id { get; set; }
public string StudentCode { get; set; }
public string InstructorCode { get; set; }
public string AssignedDateOrig { get; set; }
public virtual ICollection<WeeklyAnswerSet> WeeklyAnswerSets { get; set; }
public virtual ICollection<INSTSTUD> InstStuds { get; set; }
}
public class INSTSTUD {
[Key]
public int FOCLIST { get; set; }
public string ININSCD { get; set; }
public string INSTUCD { get; set; }
public string ASSIGNEDDATE { get; set; }
}
我可以控制AnswerSet而不是INSTSTUD。并且INSTSTUD.FOCLIST将不能用作AnswerSet中的永久外键。相反,如果我想从AnswerSet中查找INSTSTUD,我需要使用这样的连接:StudentCode=INSTUCD and InstructorCode=ININSCD and AssignedDateOrig=ASSIGNEDDATE
。
因此,考虑到这些限制,我可以将OnModelCreating
放入哪些内容,以便我的导航属性AnswerSet.InstStuds
能够正常工作?
答案 0 :(得分:0)
简短的回答,是不是。如果您没有永久主键,则无法使用导航属性。您必须手动进行联接,并希望没有密钥违规。