2013-08-13 3 views
0

У меня есть база данных, в которой я контролирую часть и не контролирую другую часть. Я хотел бы использовать EF для доступа к обеим частям, но у меня возникли проблемы с объявлением некоторых отношений. Рассмотрим следующие два объекта:EF Code First keyless association

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; } 
    } 

Я могу контролировать набор ответов, но не INSTSTUD. И INSTSTUD.FOCLIST не будет использоваться в качестве постоянного внешнего ключа в AnswerSet. Вместо этого, если я хочу найти INSTSTUD из набора ответов, мне нужно будет использовать соединение следующим образом: StudentCode=INSTUCD and InstructorCode=ININSCD and AssignedDateOrig=ASSIGNEDDATE.

Так что с учетом этих ограничений, что я могу положить в OnModelCreating, так что мое навигационное свойство AnswerSet.InstStuds будет работать?

ответ

0

Короткий ответ, вы не можете. Если у вас нет постоянного первичного ключа, вы не можете использовать свойство навигации. Вам нужно будет сделать свое присоединение вручную и надеяться, что никаких ключевых нарушений не будет.

Смежные вопросы