4
をインデックス化されていませんこれは私のインデックスコードです:はなぜRavenDBインデックスクエリでこのエラーが出るん:フィールド「のCustomerId」が
public class InvoiceSummaryView
{
public DateTime DueDate { get; set; }
public string CompanyAddress { get; set; }
public string DebtorName { get; set; }
public float Amount { get; set; }
public bool IsPaid { get; set; }
public string CustomerId { get; set; }
}
public class InvoiceSummaryIndex : AbstractIndexCreationTask<CustomerInvoice>
{
public InvoiceSummaryIndex()
{
Map = invoices => from invoice in invoices
select new { DueDate = invoice.DueDate, DebtorId = invoice.DebtorId, Amount = invoice.Amount };
TransformResults = (database, results) =>
from invoice in results
let debtor = database.Load<Debtor>(invoice.DebtorId)
let company = database.Load<Company>(debtor.CompanyId)
select new {
DueDate = invoice.DueDate,
CompanyAddress = Company.Address.ToString(),
DebtorName = debtor.Contact.First + " " + debtor.Contact.Last,
Amount = invoice.Amount,
IsPaid = invoice.IsPaid,
CustomerId = Company.CustomerId
};
}
}
そして、これは私のクエリです:
var query = from viewItem in session.Query<InvoiceSummaryView>("InvoiceSummaryIndex")
where viewItem.CustomerId == id
orderby viewItem.DueDate
select viewItem;
エラーは次のとおりです。
「エラー」:「System.ArgumentExceptionの:フィールド 『のCustomerId』がインデックス化されていない、 がで索引付けされていないフィールドに照会することはできません...
動作します
。あなたがそれを表現する方法は、そのテーブルがインデックスであり、変換がその場で行われるように思えます。そうですか?それはつまり、私がエンティティの4つのレベルのヒイラキーを持っていて、それらのいずれかを照会した場合、その子は親のIDであり、それは親の親のIDなどである必要がありますか? –
そして、それはインデックスを作成しますが、結果は返されません.Raven Studioのインデックスを見て、文字列をfloatに変換するインデックスエラーがあります。 RSに表示されたインデックスは、Amount:Amount =((float)invoice.Amount)をキャストするようにコンパイルされています。 –
アイドル、あなたはマップの出力でしか照会できません(またはそこにある場合は減らします)、TransformResultsはオンザフライで実行されます。はい。 –