2014-02-17 4 views
0

Я хочу настроить многие из многих отношений между двумя объектами, но я также хотел бы разоблачить их внешние ключи. Я нашел только один конкретное решение онлайн, как следующее:От многих до многих отношений EF с внешними ключами

modelBuilder.Entity<E1>() 
          .HasMany(t => t.E1s) 
          .WithMany(t => t.E2s) 
          .Map(m => 
          { 
           m.ToTable("E1E2"); 
           m.MapLeftKey("FKE1"); 
           m.MapRightKey("FKE2"); 
          }); 

Но карта левый и правый ключ не принимает свойства из моих моделей, так что я не имеют доступа к ним, и они не будут заполнены, когда я запрашиваю. Таким образом, у меня нет доступа к моим свойствам внешнего ключа.

Надеюсь, что я смог объяснить свою проблему. Может ли кто-нибудь предложить любой другой вариант?

ответ

1

Вы можете создать ассоциативную модель, которая имеет ключи от двух организаций:

public class AssociativeEntity 
{ 
    [Key] 
    public Guid AssociativeEntityId { get; set; } 
    public Guid Entity1Id { get; set; } 
    public Guid Entity2Id { get; set; } 

    [Display(Name = "Entity1", ResourceType = typeof(Resources.Language))] 
    public virtual Entity1 Entity1 { get; set; } 
    [Display(Name = "Entity2", ResourceType = typeof(Resources.Language))] 
    public virtual Entity2 Entity2 { get; set; } 
} 

Entity 1:

public class Entity1 
{ 
    [Key] 
    public Guid Entity1Id { get; set; } 

    /* Describe the other properties here */ 

    [Display(Name = "AssociativeEntities", ResourceType = typeof(Resources.Language))] 
    public virtual ICollection<AssociativeEntity> AssociativeEntities { get; set; } 
} 

Entity 2:

public class Entity2 
{ 
    [Key] 
    public Guid Entity2Id { get; set; } 

    /* Describe the other properties here */ 

    [Display(Name = "AssociativeEntities", ResourceType = typeof(Resources.Language))] 
    public virtual ICollection<AssociativeEntity> AssociativeEntities { get; set; } 
} 
+0

Спасибо за ваш ответ. Под «ассоциативной моделью» вы имеете в виду, что я укажу модель для промежуточной или объединенной таблицы, которую создает EF? – lbrahim

+1

Да. Проблема с modelBuilder - это ограниченный набор опций, которые вы должны работать с ассоциативной моделью. По этой причине я рекомендую вам создать модель вручную. –

+0

Хорошо, спасибо. Я сделаю это. – lbrahim

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