Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RavenDB仍然包括往返以加载包含的数据_C#_Ravendb - Fatal编程技术网

C# RavenDB仍然包括往返以加载包含的数据

C# RavenDB仍然包括往返以加载包含的数据,c#,ravendb,C#,Ravendb,我在ProductFamily(父项)和下属列表(SaleItem)之间有父/子关系。我正在本地运行Ravendb服务器,服务器作为控制台应用程序启动。当我查询家庭数据时,我试图在会话中包括SaleItems列表,以避免额外的服务器访问。然而,在控制台上,我看到了在我逐步完成foreach循环时加载每个系列的单个saleitem列表的后续调用。我认为我做了一些不正确的事情,并对它可能是什么感到困惑。我在使用RavenDB的第2天,所以任何握手都是非常感谢的 课程: public class Fa

我在ProductFamily(父项)和下属列表(SaleItem)之间有父/子关系。我正在本地运行Ravendb服务器,服务器作为控制台应用程序启动。当我查询家庭数据时,我试图在会话中包括SaleItems列表,以避免额外的服务器访问。然而,在控制台上,我看到了在我逐步完成foreach循环时加载每个系列的单个saleitem列表的后续调用。我认为我做了一些不正确的事情,并对它可能是什么感到困惑。我在使用RavenDB的第2天,所以任何握手都是非常感谢的

课程:

public class Family
    {
        public string Id { get { return string.Format(@"Families/{0}", this.FamilyID); } }
        public int FamilyID { get; set; }
        public string FamilyNumber { get; set; }
        public string Description { get; set; }
        public string[] SaleitemIds { get; set; }
        public override string ToString()
        {
            return string.Format("Number:{0}  -  {1}", FamilyNumber, Description);
        }
        [JsonIgnore]
        public List<SaleItem> SaleItems { get; set; }
    }
    public class SaleItem
    {
        public string Id { get { return string.Format(@"SaleItems/{0}", this.SaleItemID); } }
        public int SaleItemID { get; set; }
        public string Description { get; set; }
        public override string ToString()
        {
            return string.Format("Number:{0}  -  {1}", SaleItemID.ToString(), Description);
        }
    }
公共类族
{
公共字符串Id{get{return string.Format(@“Families/{0}),this.FamilyID);}
public int FamilyID{get;set;}
公共字符串FamilyNumber{get;set;}
公共字符串说明{get;set;}
公共字符串[]saleItemId{get;set;}
公共重写字符串ToString()
{
返回string.Format(“编号:{0}-{1}”,FamilyNumber,Description);
}
[JsonIgnore]
公共列表项{get;set;}
}
公营物品
{
公共字符串Id{get{return string.Format(@“SaleItems/{0}),this.SaleItemID);}
public int SaleItemID{get;set;}
公共字符串说明{get;set;}
公共重写字符串ToString()
{
返回string.Format(“编号:{0}-{1}”,SaleItemID.ToString(),Description);
}
}
以及守则:

List<SearchTerm> searchterms = new List<SearchTerm>(){ new SearchTerm(){term="1009110922"}
            ,new SearchTerm(){term="1009112439"}
            ,new SearchTerm(){term="1009122680"}
            ,new SearchTerm(){term="1009124177"}
            ,new SearchTerm(){term="1009133928"}
            ,new SearchTerm(){term="1009135435"}
            ,new SearchTerm(){term="1009148000"}};
        using (IDocumentSession session = documentStore.OpenSession())
        {
            var results = session.Query<Family>().Customize(o => o.Include<SaleItem>(s => s.Id)).Where(x => x.FamilyNumber.In(searchterms.Select(t => t.term).ToList()));

            foreach (Family fam in results)
            {
                Console.WriteLine(fam.ToString());

                fam.SaleItems = session.Load<SaleItem>(fam.SaleitemIds).ToList();
                foreach (SaleItem si in fam.SaleItems)
                {
                    Console.WriteLine("     " + si.ToString());
                }
            }
        }
List searchterms=new List(){new SearchTerm(){term=“1009110922”}
,new SearchTerm(){term=“1009112439”}
,new SearchTerm(){term=“1009122680”}
,new SearchTerm(){term=“1009124177”}
,new SearchTerm(){term=“1009133928”}
,new SearchTerm(){term=“1009135435”}
,new SearchTerm(){term=“1009148000”};
使用(IDocumentSession session=documentStore.OpenSession())
{
var results=session.Query().Customize(o=>o.Include(s=>s.Id)).Where(x=>x.FamilyNumber.In(searchterms.Select(t=>t.term.ToList());
foreach(家庭家庭成员成绩)
{
Console.WriteLine(fam.ToString());
fam.SaleItems=session.Load(fam.SaleitemIds.ToList();
foreach(fam.SaleItems中的SaleItems si)
{
Console.WriteLine(“+si.ToString());
}
}
}
当我一步一步地浏览代码时,我看到了获取行中saleitems列表的调用:

fam.SaleItems = session.Load<SaleItem>(fam.SaleitemIds).ToList();
fam.SaleItems=session.Load(fam.SaleitemIds.ToList();
我相信我实现了一些错误的东西,但我对这个平台还很陌生,我可以接受我可能只是误解了行为会是什么。在某些情况下,我肯定不希望Saleitem文档嵌入到Family文档中,因此在这种情况下,这不是一个真正的选项。

Doug\w, 看看你正在做什么:

  o.Include<SaleItem>(s => s.Id)
o.Include(s=>s.Id)
您可能希望它是:

  o.Include<SaleItem>(s => s.SaleitemIds )
o.Include(s=>s.saleItemId)

您运行的是哪个版本的RavenDB,您使用的是客户机/服务器模式还是嵌入式?Ayende,我实际上必须使用以下命令:定制(x=>x.Include(t=>t.saleItemId)),但这让我走上了正确的道路。