Aşağıdaki belge denilen Rezervasyon adres: Aşağıdaki projeksiyon sınıfı AyrıcaRavenDB'de iç içe geçmiş bilgiler nasıl sorgulanır?
{
"CustomerId": 1,
"Items": [
{
"EmployeeId": "employees/1",
"StartTime": "2011-08-15T07:20:00.0000000+03:00",
"EndTime": "2011-08-15T07:40:00.0000000+03:00"
},
{
"EmployeeId": "employees/1",
"StartTime": "2011-08-15T07:40:00.0000000+03:00",
"EndTime": "2011-08-15T09:10:00.0000000+03:00"
},
{
"EmployeeId": "employees/3",
"StartTime": "2011-08-16T07:20:00.0000000+03:00",
"EndTime": "2011-08-16T11:35:00.0000000+03:00"
}
]
"ReservedAt": "2011-10-20T15:28:21.9941878+03:00"
}
var:
ben yazabilirim indeksi ve sorguda ne türpublic class ReservationItemProjection
{
public string ReservationId { get; set; }
public string CustomerId { get; set; }
public string EmployeeId { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
Ben ReservationItemProjections eşleşen bulmak isterseniz ? Örn .:
// invalid example query:
var matches = docs.Query<ReservationItemProjection,
ReservationItemProjectionsIndex>()
.Where(x =>
x.EmployeeId == "employees/1" &&
x.StartTime >= minTime &&
x.EndTime <= maxTime)
.ToList();
Ben Rezervasyon dokümanların bir listesi ama ReservationItemProjection nesnelerin listesini almak istemeyen lütfen unutmayın. documentation diyor ki:
Zaten böyle bir dizini kullanarak denedi Rezervasyonu veya , Rezervasyonum Nesneleri alma olanağı bulduklarında, tüm Sorguları içeren tek bir Öğe, hatta sorgum olsa da, Sorgulama nerede-yan tümceler var x.EmployeeId == "employees/1" .Ancak belirli bir sorgu ile eşleşen belgeleri almanız yararlı olsa da, bundan daha iyisini yapabiliriz. Belgeleri kendileri almak yerine, tüm belgeyi almadan, değerleri doğrudan dizinden almak istiyorum.
public class ReservationItemProjectionsIndex : AbstractIndexCreationTask<Reservation, ReservationItemProjection> { public ReservationItemProjectionsIndex() { Map = reservations => from reservation in reservations from item in reservation.Items select new { ReservationId = reservation.Id, CustomerId = reservation.CustomerId, item.EmployeeId, item.StartTime, item.EndTime }; Store(x => x.ReservationId, FieldStorage.Yes); Store(x => x.CustomerId, FieldStorage.Yes); Store(x => x.EmployeeId, FieldStorage.Yes); Store(x => x.StartTime, FieldStorage.Yes); Store(x => x.EndTime, FieldStorage.Yes); } }
Bir şekilde sorgu ve dizin çalışma alınamıyor: o da için ReservationItemProjection yayın yapmayı mümkün değil varlık hakkında bir istisna atar
Özet: Gerekli dizin nedir? Dizinin yalnızca bir Map deyimine mi yoksa Azalt veya TransformResults'a mı ihtiyacı var? Sorguyu C# nasıl yazarım?
değil, belgeyi dizine değerleri istediğini biliyorum için! AsProjection gelişmiş bir özellik olarak kabul edilir mi? Google, [ravendb AsProjection] sayfasında yalnızca iki sonuç sayfası döndürür (http://www.google.com/search?q=ravendb+asprojection). Özelliğin bazı belgelere ihtiyacı var mı? –
Teşekkürler, bu cevap bugün hayatımı kurtardı! –