private void BorrowReader(SqlDataReader reader)
        {
            Data = new Dictionary <string, IEnumerable <IsbnOwnership> >();
            ICollection <IsbnOwnership> list = new Collection <IsbnOwnership>();

            EntityIdMapper = new ConcurrentDictionary <int, int>();

            while (reader.Read())
            {
                EntityIdMapper.TryAdd(reader.GetInt32(0), reader.GetInt32(1));
            }

            if (reader.NextResult())
            {
                while (reader.Read())
                {
                    IsbnOwnership item = new IsbnOwnership();
                    item.ScopeId          = reader.GetInt32(0);
                    item.Isbn             = !reader.IsDBNull(1) ? reader.GetString(1) : string.Empty;
                    item.TotalCopies      = reader.GetInt32(2);
                    item.PlatformTenantId = reader.GetInt32(4);
                    list.Add(item);
                }
            }



            var groupedItems = list.GroupBy(t => t.Isbn);

            foreach (var ownership in groupedItems)
            {
                Data.Add(ownership.Key, ownership);
            }
        }
        private void BorrowSecondaryReader(SqlDataReader reader)
        {
            ICollection <IsbnOwnership> list = new Collection <IsbnOwnership>();

            while (reader.Read())
            {
                IsbnOwnership item = new IsbnOwnership();
                item.ScopeId          = reader.GetInt32(0);
                item.Isbn             = !reader.IsDBNull(1) ? reader.GetString(1) : string.Empty;
                item.TotalCopies      = reader.GetInt32(2);
                item.PlatformTenantId = reader.GetInt32(0);
                list.Add(item);
            }

            foreach (var item in list.Where(item => EntityIdMapper.ContainsKey(item.PlatformTenantId)))
            {
                item.ScopeId = EntityIdMapper[item.PlatformTenantId];
            }

            var groupedItems = list.GroupBy(t => t.Isbn);

            foreach (var ownership in groupedItems)
            {
                if (!Data.ContainsKey(ownership.Key))
                {
                    Data.Add(ownership.Key, ownership);
                }
                else
                {
                    Data[ownership.Key] = ownership;
                }
            }
        }