Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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# Entityset在早期阶段就变成了IEnumerable_C#_.net_Linq To Sql - Fatal编程技术网

C# Entityset在早期阶段就变成了IEnumerable

C# Entityset在早期阶段就变成了IEnumerable,c#,.net,linq-to-sql,C#,.net,Linq To Sql,我有以下问题:我想在一个整洁的概览中显示来自帮助台系统的票据。我还想显示数据的摘要,比如按优先级和类别进行分组。除此之外,必须将相同的数据转换为.pdf文档 我分几个步骤检索数据。第一步是原始数据,它是.pdf、摘要和实际概述的基础。这样,我确保他们使用相同的数据。创建.pdf后,我直接从数据中读取。这些总结是通过将数据展平而得出的。通过从数据中提取一页25条记录并将字段放入网格中,可以创建概览 问题是 IQueryable<RelationHoursTicketItem> Hour

我有以下问题:我想在一个整洁的概览中显示来自帮助台系统的票据。我还想显示数据的摘要,比如按优先级和类别进行分组。除此之外,必须将相同的数据转换为.pdf文档

我分几个步骤检索数据。第一步是原始数据,它是.pdf、摘要和实际概述的基础。这样,我确保他们使用相同的数据。创建.pdf后,我直接从数据中读取。这些总结是通过将数据展平而得出的。通过从数据中提取一页25条记录并将字段放入网格中,可以创建概览

问题是

IQueryable<RelationHoursTicketItem> HoursByTicket = 
            from Ticket t in allTickets
            let hours = t.Bezoekrapport.Urens.
                Where(h =>
                    (dateFrom == null || h.Datum >= dateFrom)
                    && (dateTo == null || h.Datum <= dateTo)
                    && h.Uren1 > 0)
            select new RelationHoursTicketItem
             {
                 Date = t.DatumCreatie,
                 DateSolved = new DateTime(2012, 11, 11),
                 Ticket = t,
                 Relatie = t.Relatie,
                 TicketNr = t.Id,
                 TicketName = t.Titel,
                 TicketCategorie = t.TicketCategorie,
                 TicketPriority = t.TicketPrioriteit,
                 TicketRemark = t.TicketOpmerkings.SingleOrDefault(tr => tr.IsOplossing)
             };
IQueryable HoursByTicket=
从票t到所有票
让小时=t.Bezoekrapport.Urens。
其中(h=>
(dateFrom==null | | h.基准>=dateFrom)
&&(dateTo==null | | h.基准0)
选择new RelationHours TicketItem
{
日期=t.datumcreate,
DateSolved=新的日期时间(2012,11,11),
票=t,
Relatie=t.Relatie,
TicketNr=t.Id,
TicketName=t.滴度,
TicketCategorie=t.TicketCategorie,
TicketPriority=t.ticketprioritiit,
TicketRemark=t.TicketOpmerkings.SingleOrDefault(tr=>tr.isoclossing)
};
问题出在TicketRemark中。我一执行数据,就会得到几十个子查询,因为TicketOpmerkings(Dutch表示TicketRemark)被一个接一个地检索。最初的意图是创建一个IQueryable,它将作为所有其他查询的基础。为了实现这一点,我花了很多时间,创建了自定义表达式s来计算我从这个例子中截取的某些字段

最好的方法是什么?为所有这些链接(如t.TicketOpmerkingen)编写表达式?这将删除LINQ的一些最佳功能。到目前为止,我看到的解决方案包括手动创建表达式,但我也可以放弃这种方法,并进行多个查询,每个查询都有特定的用途。然后我放弃LINQ和IQueryable的简洁“分层”方法


任何人对此有经验吗?

您所经历的被称为。它发生在您使用ORM和功能检索实体时

您检索链接到其他实体的实体。当您尝试导航到第二组实体时,ORM/Framework当前尚未加载该实体。因此,它会为您查询该实体,允许您按预期导航

有几种方法可以解决此问题。以下是一些有关数据加载选项的文章:

如果您正在使用Linq to Sql:

对于实体框架:


希望对您有所帮助。

我已经用LoadWith解决了这个问题,我只需在设置:options.LoadWith(t=>t.TicketOpmerkings)后检索所需的票证即可;我后来遇到了另一个问题:我不能在sql上使用order by,但我可以在以后对可枚举项进行排序。非常好。在L2S中使用加载选项有一些缺点-首先,在对上下文运行查询之前,您只能为上下文设置加载选项-这可能会导致问题,但希望不会对您造成问题。编码快乐=)我很快就发现了,我只是为票据创建了一个单独的datacontext。这意味着我在以后编辑/更新时遇到了麻烦,但目前我所需要的只是检索大量连接的数据。以前的查询会话可能需要几分钟!为什么不能使用“按顺序”呢?会发生什么?我以前没有碰到过那个问题。也许开始一个新问题的新问题?是的,我做同样的事情,在一个单独的背景。这不是一种理想的做法,但通常我会尝试确保只返回/公开不是从上下文派生的实体。我正在积极地寻找解决办法,如果我找到了,我会在这里给你写封信。