这是我的索引代码:

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'未建立索引,
无法查询未在...处建立索引的字段

最佳答案

查看您的索引:

   select new { DueDate = invoice.DueDate, DebtorId = invoice.DebtorId, Amount = invoice.Amount };


您已建立索引的字段是DueDate,DebtorId和Amount,仅此而已。

如果您会这样:

   select new { DueDate = invoice.DueDate, DebtorId = invoice.DebtorId, Amount = invoice.Amount, invoice.CustomerId };


会工作的

09-10 13:13
查看更多