2014-12-22 2 views
0

я в настоящее время имеют следующую структуру базы данных: PKEntity Framework один-ко-многим конфигурации

  • TableA (itemCode int, itemCategoryCode int, itemDescription description)
  • TableB (id int, itemCode int, itemCategoryCode int)

TABLEA является (itemCode, itemCategoryCode). TableB's PK - id, а FK - (itemCode, itemCategoryCode).

Мне нужно настроить EF таким образом, чтобы между таблицей A и TableB у меня было отношение один-много. И так, что, когда я захватываю объект из TableB, заполняется навигационное свойство TableA.

Как настроить классы POCO с аннотациями для достижения этого и/или свободного API?

Спасибо.

ответ

1

с аннотациями данных:

Таблица A:

public class TableA { 

    [Key, Column(Order=0)] 
    public int itemCode { get; set; } 

    [Key, Column(Order=1)] 
    public int itemCategoryCode { get; set; } 

    public virtual ICollection<TableB> TableBs { get; set; } 
} 

TableB:

public class TableB { 

    [Key] 
    public int ID { get; set; } 

    [ForeignKey("TableARecord"), Column(Order=1)] 
    public int itemCode { get; set; } 

    [ForeignKey("TableARecord"), Column(Order=2)] 
    public int itemCategoryCode { get; set; } 

    public virtual TableA TableARecord { get; set; } 

} 
+0

Когда я применил аннотации, это сработало. однако, когда я присоединяюсь к нему на другой таблице и возвращаю объект из контекста, свойство не заполняется. Я что-то упускаю? – nav

0

просто добавить виртуальную собственность коллекции «Многие» класс, и свойство типа «One» ваш «много» класса см ниже кода из http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx

public class Student 
    { 
     public Student() { } 

     public int StudentId { get; set; } 
     public string StudentName { get; set; } 

     public virtual Standard Standard { get; set; } 
    } 

    public class Standard 
    { 
     public Standard() 
     { 
      StudentsList = new List<Student>(); 
     } 
     public int StandardId { get; set; } 
     public string Description { get; set; } 

     public virtual ICollection<Student> Students { get; set; } 
    } 
Смежные вопросы