Используйте трюк с фиктивными классами:
// you have a group
var group = GetGroupSomehow();
// if group is unknown to the context Attach it
context.Groups.Attach(group); // if it is a new group use AddObject
// now add programs
foreach(var program in programId.Select(id => new Program { Id = id }))
{
// Attach dummy program first
context.Programs.Attach(program);
// Now make relation between group and program
group.Programs.Add(program);
}
context.SaveChanges();
Единственное требование состоит в том, что ни один Program
из идентификаторов программы не загружен Если какая-либо программа загружена, она будет более сложной, потому что сначала вам нужно будет проверить ее в ObjectStateManager
и использовать загруженный экземпляр.