EF программно вставляет многие во многие

#entity-framework

#entity-framework

Вопрос:

У меня есть таблица с идентификатором этой структуры PK и двумя столбцами с FK, например ActivityId и ContactID. Я пытаюсь программно вставить некоторое значение в эти два столбца FK. Как я могу это сделать, любая помощь приветствуется.Tnx

Ответ №1:

Если вы хотите использовать свою структуру — вам нужно получить экземпляры Activity и Contact и просто установить соответствующие свойства для нового объекта.

 var newActivityContact = new ActivityContact();// m_Entities.CreateActivityContact(0);
newActivityContact.Activity = activityRepository.GetById(activityId);
newActivityContact.Contact = contactRepository.GetById(contactId);
m_Entities.AddToActivityContact(newActivityContact);
m_Entities.SaveChanges();
  

Комментарии:

1. activityRepository. GetById(ActivityId) — это запрос для получения этого действия.

2. да — извлеките его из вашего экземпляра m_Entities, например m_Entities. Контакты. FirstOrDefault(c=>c.Contact_Id == ContactID);

Ответ №2:

Я думаю, лучшим решением было бы избавиться от первичного ключа, настроить комбинацию ActivityId и ContactID как PK, а затем воссоздать всю модель в visual designer. Каждый Activity объект будет иметь Contacts свойство навигации, и каждый Contact будет иметь Activities . Вы сможете добавлять контакты в activity, вызывая:

 activity.Contacts.Add(contact);
  

Если вам действительно нужен дополнительный идентификатор, это будет сложнее.

Комментарии:

1. У меня есть эти два FK в datatable, и я пытаюсь вставить это в эту относительную таблицу в sql.