EF Code First无钥匙关联

时间:2013-08-13 19:43:13

标签: entity-framework ef-code-first code-first

我有一个数据库,我控制其中一部分并且无法控制另一部分。我想用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能够正常工作?

1 个答案:

答案 0 :(得分:0)

简短的回答,是不是。如果您没有永久主键,则无法使用导航属性。您必须手动进行联接,并希望没有密钥违规。