public static void SetEventTopic(ObjectContext context, EventV2 source, Event theEvent) { try { //ignore null values if (source.EventTopics == null) return; var topics = context.CreateObjectSet<EventTopic>(); var eventTopics = new List<EventTopic>(); foreach (var topicName in source.EventTopics.Select(e => e.Name)) { var eventTopic = topics.Where(i => i.Name == topicName).FirstOrDefault(); //Ensure eventTopic exists if (eventTopic == null) { //topic doesn't exist, create a new topic eventTopic = new EventTopic() { Name = topicName, IsEnabled = true }; topics.AddObject(eventTopic); } eventTopics.Add(eventTopic); } UpdateEventTopic(theEvent, eventTopics, context); } catch (Exception ex) { throw new BusinessException("Error processing the event topic for event '" + theEvent.Title + "' - " + ex.Message, ex); } }
public void FilterByTopic() { //setup var topic1 = new EventTopic { Id = 1 }; var topic2 = new EventTopic { Id = 2 }; var event1 = new Event { Id = 1 }; var event2 = new Event { Id = 2 }; event1.EventTopicAssociations.Add(new EventTopicAssociation { EventTopic = topic1, EventTopicId = topic1.Id }); _objectSet.Add(event1); event2.EventTopicAssociations.Add(new EventTopicAssociation { EventTopic = topic2, EventTopicId = topic2.Id }); _objectSet.Add(event2); //act var filtered = _objectSet.AsQueryable().FilterByTopic(1); //assert AssertIncluded(filtered, 1); AssertExcluded(filtered, 2, 3); }