/// <summary> /// Create a new Entity Set for the specified entities. /// </summary> /// <remarks> /// This method uses a bulk insert to improve performance when creating large Entity Sets. /// </remarks> /// <param name="name"></param> /// <param name="entityTypeId"></param> /// <param name="entityIdList"></param> /// <param name="expiryMinutes"></param> /// <returns></returns> public int AddEntitySet(string name, int entityTypeId, IEnumerable <int> entityIdList, int expiryMinutes = 20) { // Create a new Entity Set. var entitySet = new Rock.Model.EntitySet(); entitySet.Name = name; entitySet.EntityTypeId = entityTypeId; entitySet.ExpireDateTime = RockDateTime.Now.AddMinutes(expiryMinutes); Add(entitySet); var rockContext = ( RockContext )this.Context; rockContext.SaveChanges(); // Add items to the new Entity Set, using a bulk insert to improve performance. if (entityIdList != null && entityIdList.Any()) { var entitySetItems = new List <Rock.Model.EntitySetItem>(); foreach (var key in entityIdList) { var item = new Rock.Model.EntitySetItem(); item.EntityId = key; item.EntitySetId = entitySet.Id; entitySetItems.Add(item); } rockContext.BulkInsert(entitySetItems); } return(entitySet.Id); }
private int? GetPersonEntitySet( EventArgs e) { OnGridRebind( e ); var keys = GetPersonData(); if ( keys.Any() ) { var entitySet = new Rock.Model.EntitySet(); entitySet.EntityTypeId = Rock.Web.Cache.EntityTypeCache.Read( "Rock.Model.Person" ).Id; entitySet.ExpireDateTime = RockDateTime.Now.AddMinutes( 5 ); foreach ( var key in keys ) { try { var item = new Rock.Model.EntitySetItem(); item.EntityId = (int)key.Key; entitySet.Items.Add( item ); } catch { } } if ( entitySet.Items.Any() ) { var rockContext = new RockContext(); var service = new Rock.Model.EntitySetService( rockContext ); service.Add( entitySet ); rockContext.SaveChanges(); return entitySet.Id; } } return null; }