私は次のクラスを持っています
public class Project : IWorkflowDocument
{
public string Id { get; set; }
public Dictionary<Type, List<DenormalizedWorkflowReference<IWorkflowDocument>>> Parents { get; set; }
}
public class DenormalizedWorkflowReference<T> where T : IWorkflowDocument
{
public string Id { get; set; }
public string Name { get; set; }
public static implicit operator DenormalizedWorkflowReference<T>(T doc)
{
return new DenormalizedWorkflowReference<T>
{
Id = doc.Id,
Name = doc.Name
};
}
}
Db にいくつかの親を持つプロジェクトを保存すると、次のようになります。
{
"Name": "TestProject",
"Parents": {
"InterGrowth.Framework.MES.DomainObjects.Company, InterGrowth.Framework.MES.DomainObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null": [
{
"Id": "companies/225",
"Name": "Test Corporation"
}
]
},
"Children": {
"InterGrowth.Framework.MES.DomainObjects.Order, InterGrowth.Framework.MES.DomainObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null": [
{
"Id": "orders/97",
"Name": "Order_0"
}
]
}
}
タイプとIDがわかっている場合、親プロパティを介してプロジェクトを取得するための正しいクエリは何でしょうか? 次の試みを試みましたが失敗しました:
var result = session.Query<Project>().Select(s => s.Parents[typeof (Company)]).Where(y => y.Any(u => u.Id == Company.Id));
var result = from project in session.Query<Project>() where project.Parents[typeof(Company)].Any(t=> t.Id == Company.Id) select project;