public async Task <IEnumerable <IRoleEntity> > GetAllAsync(Func <IRoleEntity, bool> filter)
        {
            var pk   = RoleEntity.GeneratePartitionKey();
            var list = await _tableStorage.GetDataAsync(pk, filter : filter);

            return(list as IEnumerable <IRoleEntity>);
        }
        public async Task <IRoleEntity> GetAsync(string roleId)
        {
            var pk = RoleEntity.GeneratePartitionKey();
            var rk = RoleEntity.GenerateRowKey(roleId);

            return(await _tableStorage.GetDataAsync(pk, rk));
        }
        public async Task SaveAsync(IRoleEntity roleEntity)
        {
            if (!(roleEntity is RoleEntity role))
            {
                role = (RoleEntity) await GetAsync(roleEntity.RowKey) ?? new RoleEntity();

                role.ETag      = roleEntity.ETag;
                role.Name      = roleEntity.Name;
                role.KeyValues = roleEntity.KeyValues;
            }
            role.PartitionKey = RoleEntity.GeneratePartitionKey();
            role.RowKey       = roleEntity.RowKey;
            await _tableStorage.InsertOrMergeAsync(role);
        }
        public async Task SaveAsync(IRoleEntity roleEntity)
        {
            if (roleEntity is RoleEntity role)
            {
                role.PartitionKey = RoleEntity.GeneratePartitionKey();
                role.RowKey       = roleEntity.RoleId;
            }
            else
            {
                var pk = RoleEntity.GeneratePartitionKey();
                var rk = RoleEntity.GenerateRowKey(roleEntity.RoleId);
                role = await _tableStorage.GetDataAsync(pk, rk)
                       ?? new RoleEntity
                {
                    PartitionKey = pk, RowKey = rk
                };

                role.RoleId    = roleEntity.RoleId;
                role.Name      = roleEntity.Name;
                role.KeyValues = roleEntity.KeyValues;
            }

            await _tableStorage.InsertOrMergeAsync(role);
        }
        public async Task <IEnumerable <IRoleEntity> > GetAllAsync()
        {
            var pk = RoleEntity.GeneratePartitionKey();

            return(await _tableStorage.GetDataAsync(pk));
        }