Ravendb 如何查询TIndexCreator
我创建了以下索引:Ravendb 如何查询TIndexCreator,ravendb,Ravendb,我创建了以下索引: public class ReceiptsByClient : AbstractIndexCreationTask<Receipt> { public ReceiptsByClient() { Map = receipts => from r in receipts let d = LoadDocument<Debtor>(
public class ReceiptsByClient : AbstractIndexCreationTask<Receipt>
{
public ReceiptsByClient()
{
Map = receipts => from r in receipts
let d = LoadDocument<Debtor>(r.Receipt_Debtor)
select new { ClientId = d.Debtor_Client };
}
}
公共类ReceiptsByClient:AbstractIndexCreationTask
{
公共收据周期客户()
{
Map=收据=>收据中的r
设d=装载单据(r.收据\债务人)
选择新的{ClientId=d.d\u Client};
}
}
现在,我想对该索引进行如下查询:
var rptQry = Session.Query<Receipt, ReceiptsByClient>()
var rptQry=Session.Query()
当然,我希望能够在Where子句中传递ClientId的值。但是,where子句的T是Receipt类型,不知道ReceiptsByClient中定义的匿名类型的ClientId。
如何使用我的ReceiptsByClient索引进行查询?Raven几乎可以处理所有与索引匹配的查询。您只需要一个类型,该类型具有要查询的字段:
public class Foo
{
public string ClientId { get; set; }
}
然后在查询中使用它,并使用As
将其返回,这样您的结果才是真正的类
var q = session.Query<Foo, ReceiptsByClient>()
.Where(x=> x.ClientId == "clients/123")
.As<Receipt>();
var q=session.Query()
.Where(x=>x.ClientId==“clients/123”)
.As();
请注意,
ClientId
字段不会出现在结果中。如果您想这样做-您必须使用store(x=>x.ClientId,FieldStorage.Yes)
将字段存储在索引中,然后在查询中使用AsProjection
将类型转换为具有所有字段的类。我需要什么样的使用语句才能将As纳入范围?