Je suis nouveau sur RaveDB (En fait, j'ai commencé à l'apprendre hier). Et essayez d'implémenter certaines fonctionnalités.RavenDB sélectionner des documents par champ d'index
Permet de nous la prochaine hiérarchie de classes:
public abstract class Transaction
{
public string Id { get; set; }
}
public class CategoryTransaction : Transaction
{
public string AccountId { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public decimal Amount { get; set; }
}
public class ExchangeTransaction : Transaction
{
public string DebitAccountId { get; set; }
public string CreditAccountId { get; set; }
public decimal DebitAmount { get; set; }
public decimal CreditAmount { get; set; }
}
Tout le stockage excelent int db. L'événement I ajoute Conventions = FindTypeTagName ...
pour les documents de magasin en tant qu'ID de document 'transactions/*'. Mais je veux créer un index pour sélectionner toutes les transactions pour un compte spécifique (par champ AccountId). J'ai créer un index:
public class AccountTransactionResult
{
public string AccId { get; set; }
}
public class Account_Transactions : AbstractMultiMapIndexCreationTask<AccountTransactionResult>
{
public Account_Transactions()
{
this.AddMap<CategoryTransaction>(transactions => from transaction in transactions
select new
{
AccId = transaction.AccountId
});
this.AddMap<ExchangeTransaction>(transactions => from transaction in transactions
select new
{
AccId = transaction.DebitAccountId
});
this.AddMap<ExchangeTransaction>(transactions => from transaction in transactions
select new
{
AccId = transaction.CreditAccountId
});
}
}
Cet indice fonctionne bien, je ne peux pas obtenir tous les types de transactions de DB (Exchange et catégorie) comme unique IEnumerable<Transaction>
. C'est super.
Mais je veux utiliser l'index pour retourner des transactions uniquement pour un compte particulier. Parce que ExchangeTransaction
peut appartenir à deux Accounts
. Je veux voir ExchangeTransaction
pour les deux Accounts
. Je peux faire une requête dans Raven Studio par AccId (champ d'index) et ça fonctionne bien! Mais je ne peux pas créer la même demande dans le code :(.
Quelqu'un peut-il me aider? Comment puis-je utiliser le champ index ACCID dans la requête C# LINQ?
Ce code
var query = session.Query<Transaction, Account_Transactions>()
retour tout type de transaction, mais je ne veux pas comment filtrer les transactions par champ d'index dans la base de données.
Merci à l'avance. Et s'il vous plaît me désolé mon anglais, ce n'est pas ma langue maternelle.