2015-07-31 6 views
0

Я работаю с Entity Framework с использованием подхода, основанного на кодах. Я успешно загрузил данные для отношения «многие ко многим» («Тип к статусу»). Теперь мне нужно засеять данные для отношения «многие ко многим» между статусом и подчиненным.Сегментный код Первый много-ко-многим из многих-ко-многим

Сначала создаю все статусы, а затем добавляю каждый тип и добавляю отношения «многие ко многим» с каждым статусом.

Вот что у меня есть для типа и состояния:

IList<Status> statuses = new List<Status>(); 

    statuses .Add(new Status() { Value = "On" }); 
    statuses .Add(new Status() { Value = "Off" }); 

    foreach (Status s in statuses) 
    { 
     context.Set<Status>().AddOrUpdate(s); 
    } 

    Type type1 = new Type() 
    { 
     Value = "Type 1", 
     Status = new List<Status>() 
     { 
      statuses.FirstOrDefault(e => e.Value == "On"), 
      statuses.FirstOrDefault(e => e.Value == "Off") 
     } 
    }; 
    Type type2 = new Type() 
    { 
     Value = "Type 2", 
     Status = new List<Status>() 
     { 
      statuses.FirstOrDefault(e => e.Value == "On"), 
     } 
    }; 

Как я могу построить прочь, чтобы это потом добавить многие-ко-многим между статусом и Подстатус сейчас?

Вот список нескольких подстатусов:

IList<SubStatus> subStatuses = new List<SubStatus>(); 
    subStatuses.Add(new SubStatus() { Value = "Success" }); 
    subStatuses.Add(new SubStatus() { Value = "Fail" }); 

    foreach (SubStatus s in subStatuses) 
    { 
     context.Set<SubStatus>().AddOrUpdate(s); 
    } 
+0

Я не понимаю, где у вас возникли проблемы , Просто убедитесь, что все коллекции содержат правильные объекты, и у вас нет разных экземпляров, представляющих один и тот же объект. – user2697817

+0

У меня возникли проблемы с добавлением многого ко многим между Status и SubStatus – JAck28

ответ

0

Я считаю, что вы ищете отношения родителя/ребенка? Вы можете перестроить вашу Status сущность, как это и удалить SubSatus класс:

public class Type 
{ 
    public string Value {get;set;} 
    public ICollection<Status> Statuses {get;set;} 
{ 

public class Status 
{ 
     public string Value {get;set;} 
     public int? ParentStatusId {get;set;} 
     public Status ParentStatus {get;set;} 
     public ICollection<Status> ChildStatuses {get;set;} 
     Public ICollection<Type> Types {get;set;} 

} 

Затем вы можете добавить ChildStatuses и связать их с ParentStatus

var typeA = new Type() 
      { 
       Value = "Type A" 
      }; 

var typeB = new Type() 
      { 
       Value = "Type B" 
      }; 
var statuses = new List<Status>(){ 
        new Status() 
        { 
         Value = "On", 
         ChildStatuses = new List<Status>(){ 
               new Status() 
               { 
                Value = "Success", 
                Types = new List<Type>() 
                  { 
                  typeA, 
                  typeB 
                  } 
               }, 
               new Status() 
               { 
                Value = "Fail", 
                Types = new List<Type>() 
                  { 
                  typeB 

                  } 
               } 
        } 
        }; 


context.Set<Status>().AddOrUpdate(s => s.Value, statuses.ToArray()); 
+0

Но как я могу добавить много-много между статусом и типом? – JAck28

+0

@ JAck28, я обновил ответ, вы бы поместили коллекцию типов в объект Status. Когда вы посеваете, я бы создавал каждый статус и тип отдельно, а затем связывал их, как вам нужно. Таким образом, вы получите больше контроля над данными. В итоге, что генерируется EF в базе данных, будет таблица ссылок между статусами и типами. У вас есть пример сопоставлений сущностей, чтобы мы могли видеть, как вы определяете свои отношения? – DDiVita

+0

Спасибо, @DDiVita. Я подумаю об этом еще и попытаюсь реализовать, я буду следить за вами. – JAck28

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