我是RaveDB的新手(其實我只是在昨天才開始學習它)。並嘗試實現一些功能。RavenDB通過索引字段選擇文檔
讓我們有下一個類層次結構:
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; }
}
存儲的一切外觀極好INT分貝。我爲活動添加了Conventions = FindTypeTagName ...
作爲「交易/ *」文檔ID。
但我想創建索引以選擇特定帳戶的所有交易(按字段AccountId)。我已經創建索引:
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
});
}
}
這個指數效果很好,我不能從DB(Exchange和類別)獲得所有類型的交易單IEnumerable<Transaction>
。太棒了。
但我想使用該索引僅返回特定帳戶的交易。因爲ExchangeTransaction
可以屬於兩個Accounts
。 Accounts
我希望看到ExchangeTransaction
。我可以通過AccId(索引字段)在Raven Studio中進行查詢,並且它可以工作!但我不能在代碼中創建:(同樣的要求。
有人能幫助我嗎?我如何使用索引字段ACCID在C#中的LINQ查詢?
此代碼
var query = session.Query<Transaction, Account_Transactions>()
回報所有類型的交易,但我不如何通過索引字段在數據庫中篩選交易。提前
謝謝,對不起,請我我的英語,這不是我的母語。