protected override void PersistUpdatedItem(IItemCache entity) { ((Entity)entity).UpdatingEntity(); var factory = new ItemCacheFactory(); var dto = factory.BuildDto(entity); Database.Update(dto); _itemCacheLineItemRepository.SaveLineItem(entity.Items, entity.Key); entity.ResetDirtyProperties(); }
/// <summary> /// Gets all <see cref="IItemCache"/>. /// </summary> /// <param name="keys"> /// The keys. /// </param> /// <returns> /// The <see cref="IEnumerable{IItemCache}"/>. /// </returns> protected override IEnumerable <IItemCache> PerformGetAll(params Guid[] keys) { var dtos = new List <ItemCacheDto>(); if (keys.Any()) { // This is to get around the WhereIn max limit of 2100 parameters and to help with performance of each WhereIn query var keyLists = keys.Split(400).ToList(); // Loop the split keys and get them foreach (var keyList in keyLists) { dtos.AddRange(Database.Fetch <ItemCacheDto>(GetBaseQuery(false).WhereIn <ItemCacheDto>(x => x.Key, keyList, SqlSyntax))); } } else { dtos = Database.Fetch <ItemCacheDto>(GetBaseQuery(false)); } var factory = new ItemCacheFactory(); foreach (var dto in dtos) { var itemCache = factory.BuildEntity(dto); ((ItemCache)itemCache).Items = GetLineItemCollection(itemCache.Key); itemCache.ResetDirtyProperties(); yield return(itemCache); } // TODO - Original Code //if (keys.Any()) //{ // foreach (var key in keys) // { // yield return Get(key); // } //} //else //{ // var dtos = Database.Fetch<ItemCacheDto>(GetBaseQuery(false)); // foreach (var dto in dtos) // { // yield return Get(dto.Key); // } //} }
protected override IItemCache PerformGet(Guid key) { var sql = GetBaseQuery(false) .Where(GetBaseWhereClause(), new { Key = key }); var dto = Database.Fetch <ItemCacheDto>(sql).FirstOrDefault(); if (dto == null) { return(null); } var factory = new ItemCacheFactory(); var itemCache = factory.BuildEntity(dto); ((ItemCache)itemCache).Items = GetLineItemCollection(itemCache.Key); itemCache.ResetDirtyProperties(); return(itemCache); }