2014-02-18 2 views
0

Возможно, это слишком важно, но я пытаюсь создать следующее соотношение. У меня есть объект Organization. У каждой организации может быть много AuthorizedThirdParties. AuthorizedThirdParties - это организации. Как это сделать? Для некоторого контекста. Уполномоченный сторонник - это способ сказать: «Эта конкретная организация (а не я) может получить доступ к определенной информации о моей организации».Создайте отношение многих ко многим (сначала код EF), где каждая сторона отношений одинакова.

модель Организация (обрезается для краткости):

public class Organization 
{ 
    [Key] 
    public int OrganizationId { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<Organization> AuthorizedThirdParties { get; set; } 
} 

Я думал делать некоторые вещи свободно API, но не могу показаться, чтобы выяснить, каким образом. Я настроен для нескольких других отношений m2m, но каждый из них ссылается на разные модели (например, Организация и Пользователь).

ответ

1

Вы не переусердствовали. Структуры данных сложны и должны выполняться правильно. Структура данных, которую вы описываете, - . Существует множество способов представления графика. Среди них:

  • список смежности
  • список Заболеваемость
  • матрица смежности
  • матрица инцидентности

У каждого есть свои преимущества и недостатки на основе одна ожидаемая использования. Для отправной точки, нажмите википедию:

Лучше всего делать это, чтобы исследовать, как для представления данных и как хранить данные, здесь является отправной ссылкой:

1

Если отношения многие-ко-многим (организация может иметь много AuthorizedThirdParties, и организация может быть уполномоченной третьей стороной для многих других организаций), вы просто используете стандартное сопоставление. Нет ничего особенного в том, является ли целевой объект одинаковым или отличным:

modelBuilder.Entity<Organization>() 
    .HasMany(o => o.AuthorizedThirdParties) 
    .WithMany() 
    .Map(m => 
    { 
     m.ToTable("AuthorizedThirdPartyMap"); 
     m.MapLeftKey("OrganizationId"); 
     m.MapRightKey("AuthorizedThirdPartyId"); 
    }); 
Смежные вопросы