Comment interroger par PartitionKey dans Azure Table de stockage?
-
19-09-2019 - |
Question
J'ai la classe TableServiceContext suivante pour les livres, je veux interroger la table Livres du PartitionKey, s'il vous plaît ne pas tenir compte du fait que J'utilise la clé de partition comme le nom du livre, c'est juste pour mes sakés d'apprentissage
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));
}
}
Je reçois « Impossible de convertir implicitement le type « System.Linq.IQueryable » à « System.Data.Services.Client.DataServiceQuery ». Il existe une conversion explicite (vous manque un casting?) » Sur cette dernière ligne.
Toute aide sera appréciée!
La solution
qResult
est déjà attribué un type par le compilateur. Vous essayez de réattribuer à un autre type, mais qui ne sont pas autorisés.
Essayer cette
var someOtherName = qResult.Where(e => (e.PartitionKey.CompareTo(partitionKey)==0));
Modifier Il semble que votre propriété est Livres le mauvais type
.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));
}