public void AddTemplate(Template template, IEnumerable<Sites> assignedSites) { _templateRepository.Add(template); UpdateTemplateRemoteSites(template, assignedSites); } public void UpdateTemplate(Template template, IEnumerable<Sites> assignedSites) { _templateRepository.Update(template); UpdateTemplateRemoteSites(template, assignedSites); }where the last method is:
private void UpdateTemplateRemoteSites(Template template, IEnumerable<Sites> assignedSites) { IEnumerable<Sitelink> currentSiteLinks = _siteLinkRepository.GetSiteLinksForTemplate(template.TemplateId); IList<short> currentSites = currentSiteLinks.Select(x => x.SiteNo).ToList(); IList<short> sites = assignedSites.Select(x => x.SiteNo).ToList(); AssignRemoteSitesToTemplate(template, currentSites, sites); RemoveRemoteSitesFromTemplate(template, currentSites, sites); }So, the template is associated with another table storing the sites. In the interface we're using the Mover for Assigned and Available Sites.