我可能在這裏完全錯誤地調用了錯誤的樹,但是...我有一個RavenDB,其中存儲了許多RavenPerson類型的對象。如何在RavenDB中爲嵌套日期建立索引
每個RavenPerson都有一個郵件正文列表,每個郵件正文都有一個關聯的日期。
{
"Bodies": [
{
"RenewalRunDate": "2011-11-30T00:00:00.0000000+00:00",
"BodyText": "A bunch of text"
}
]
}
我想採取一個給定的日期,並獲得該人的id和相關正文文本的列表。
所以......
public class MailingsByDate : AbstractIndexCreationTask<RavenPerson, PersonMailingModel>
{
public MailingsByDate()
{
Map = people =>
people.SelectMany(person => person.Bodies,
(person, body) =>
new PersonMailingModel
{
MembershipNumber = person.MembershipNumber,
MailingBody = body.BodyText,
MailingDate = body.RenewalRunDate
});
}
}
,但是當我把這個
var mailings = DocumentSession.Query<PersonMailingModel, MvcApplication.MailingsByDate>()
.Where(pmm => pmm.MailingDate == date.Value);
我得到一個異常
無法轉換類型 'IntegraRenewalMailLibrary.RavenPerson' 的對象鍵入'RenewalLogs.Models.PersonMailingModel'。
在此先感謝!
更新: 改變調用下面了指數不解決異常
var mailings = DocumentSession.Query<PersonMailingModel, MvcApplication.MailingsByDate>()
.Where(pmm => pmm.MailingDate == date.Value)
.As<PersonMailingModel>()
.ToList();
Update更新: 我已經創建了示例測試Visual Studio解決方案這裏的情況:https://github.com/pauldambra/IndexExploration
使用版本1.0.888
我絕對沒有包裹着我的身邊是什麼在發生指標,所以我猜測這是我或者不這樣做是正確或嘗試做錯誤的事情頭部......
Ayende指着我在Twitter上的解決方案,就是把電話的SelectMany出來的指數,並使用LINQ查詢形式
public class RecipientsByDate : AbstractIndexCreationTask<Person, PersonMailing>
{
public RecipientsByDate()
{
Map = people => from person in people
from body in person.Bodies
select new PersonMailing
{
MembershipNumber = person.MembershipNumber,
MailingBody = body.BodyText,
MailingDate = body.MailingDate
};
}
}
我已經添加了這個通話結束時通過調用替換(我會更新以上,以確保我已經按預期完成了),並且它會拋出e同樣的錯誤... –
將此標記爲Ayende提供的答案,因爲他實際上在Twitter上向我指出了正確的方向...... –