Como consultar por PartitionKey em Azure Storage Table?
-
19-09-2019 - |
Pergunta
Eu tenho a seguinte classe TableServiceContext para livros, quero consultar os livros de mesa pela PartitionKey, por favor ignore o fato de que Eu estou usando a chave de partição, como o nome do livro, este é apenas para o meu amor de aprendizagem
public class BookDataServiceContext: TableServiceContext
{
public BookDataServiceContext(string baseAddress, StorageCredentials credentials)
: base(baseAddress, credentials)
{
}
public IQueryable<Book> Books
{
get
{
return this.CreateQuery<Book>("Books");
}
}
public void AddMessage(string name, int value)
{
this.AddObject("Books", new Book {PartitionKey=name, BookName = name, BookValue = value});
this.SaveChanges();
}
public Book GetBookByPartitionKey(Guid partitionKey)
{
var qResult = this.CreateQuery<Book>("Books");
This doesnt work ----> // qResult = qResult.Where(e => (e.PartitionKey.CompareTo(partitionKey)==0));
}
}
Eu recebo um "Não é possível converter implicitamente tipo 'System.Linq.IQueryable' para 'System.Data.Services.Client.DataServiceQuery'. Existe uma conversão explícita (faltam um elenco?)" Nessa última linha.
Qualquer ajuda será apreciada!
Solução
qResult
já está atribuído um tipo pelo compilador. Você está tentando re-atribuí-la a um tipo diferente, mas isso não é permitido.
Tente este
var someOtherName = qResult.Where(e => (e.PartitionKey.CompareTo(partitionKey)==0));
Editar:. Parece que seus Livros propriedade é o tipo errado
public DataServiceQuery<Book> Books
{
get
{
return this.CreateQuery<Book>("Books");
}
}
public Book GetBookByPartitionKey(string partitionKey)
{
var qResult = Books.Where(e => (e.PartitionKey.CompareTo(partitionKey)==0));
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow