Я думаю, что лучшим решением было бы избавиться от первичного ключа, настроить комбинацию ActivityID и ContactID как PK, а затем воссоздать всю модель в визуальном конструкторе. Каждый Activity
объект будет иметь Contacts
свойство навигации, а каждый Contact
будет иметь Activities
. Вы сможете добавить контакты в активность, позвонив по номеру:
activity.Contacts.Add(contact);
Если вам действительно нужен дополнительный ID, он будет более сложным.