2013-07-30 3 views
1

В перекрестных справочных таблицах EF абстрагируются путем создания отношений «многие ко многим». НАПРИМЕР.Как обновить таблицу перекрестных ссылок?

enter image description here

Там в таблице dbo.TrialContactCrossReference SQL, который относится к TrialContactId TrialID. Теперь EF не генерировал Entity TrialContactCrossReference, потому что он работал с этой МНОГИЙ МНОГИМИ. Как добавить новую строку в указанную таблицу?

Я попытался

context.TrialContacts.??? и context.ClinicalTrials.??? и просто не знают, что делать с этим. Если у меня есть новый контакт, я хочу связать с испытанием, как я должен это делать?

+1

Это крошечная крошечная картинка с огромным огромным пространством вокруг нее. –

ответ

1

Есть трюк, который не был явным для меня при настройке. TableA необходимо добавить в TableB, а не только к себе. Фактически, глядя на сгенерированные объекты, каждый объект имеет список <> другого объекта.

class TableA 
{ 
    List<TableB> TableB; 
} 

class TableB 
{ 
    List<TableA> TableA; 
} 

Например, если я хочу, чтобы добавить TrialContact к ClinicalTrial тогда я пишу:

context.ClinicalTrials.TrialContacts.Add(trialContact);
context.SaveChanges()

Тогда таблица перекодировки обновляется, чтобы отразить отношения.

2

Если у меня есть новый контакт, который я хочу связать с испытанием, как я должен это делать?

Если у вас есть существующий контакт, экземпляр просто сделать:

trial.TrialContacts.Add(contact); 
context.SaveChanges(); 

EF будет заботиться о промежуточной вставке таблицы для вас. Обратите внимание, что добавление Contact s и Trial s работает так же, как если бы они не были связаны.

+0

Этот ответ был полезен. В конечном счете мне пришлось сделать что-то большее, чем 'context.ClinicalTrials.TrialContacts.Add (trialContact);'. Мне пришлось включить обе таблицы. –

2

trial.Contacts.Add (contact);

ИЛИ

contact.Trials.Add (испытание);

ИЛИ (и мой совет)

вы могли бы создать дополнительный объект для перекрестной справочной таблицы. это преобразует много-много в 2 отношения один-много. более 90% случаев кросс-таблицы имеют дополнительные столбцы (по крайней мере, IsActive, RecordDate и т. д.), даже если это не так, возможно, так и будет в будущем, и это потребует внесения большого количества изменений в код.

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