我在這個班的RavenDB集合...查詢過在RavenDB組合鍵集合使用C#
public class Report
{
public string User { get; set; }
public int Quarter { get; set; }
public int Year { get; set; }
public string ReportData { get; set; }
}
有每季度只有一個報告,每年爲每個用戶(所以識別。關鍵是{ User, Quarter, Year }
我想創建一個函數來保存這些報告的列表,覆蓋舊文件或插入新的需要,我想出了這一點:
public void Save(IList<Report> reports)
{
session.Query<Report>()
.Join(reports,
x => new { x.User, x.Quarter, x.Year },
y => new { y.User, y.Quarter, y.Year },
(x, y) => new { OldReport = x, NewReport = y })
.ForEach(report =>
{
if (report.OldReport != null)
report.OldReport.InjectFrom(report.NewReport);
else
session.Store(report.NewReport);
});
session.SaveChanges();
}
然而,RavenDB不支持.Join
操作編輯:我是意識到這也需要成爲一個正確的外部連接才能發揮作用,但我認爲它表達了我的意圖。我知道我需要做某種Map Reduce來實現這一點,但我是RavenDB的新手,我找不到與我正在做的事情相關的任何好例子。有沒有人嘗試過這樣的事情?
P.S.如果有人想知道,.InjectFrom()
操作正在使用Omu.ValueInjecter
。