根据数据库表的Xml创建错误:.Net Core 3.1内存泄漏

问题描述 投票:1回答:1

我正在建立一种获取Xml数据的方法,该数据是从数据库表中获取的。在.Net Core2.1项目更新为.Net Core 3.1.1之前,上述功能一直有效。下面的代码显示了错误。

Template.cs

 orderTemplate =
                  (from ordt in _context.OrderTemplates
                   where ordt.Id == orderTempId // int orderTempId=1;
                   select new XElement("OrderTemplate",
                          new XElement("OrderTemplateId", ordt.Id),
                          new XElement("OrderTemplateName", ordt.Name),
                          new XElement("OrderTemplateDescription", ordt.Description)));

Exception

Client projection contains reference to constant expression of 'System.Xml.Linq.XName'. 
This could potentially cause memory leak. Consider assigning this constant to local variable 
and using the variable in the query instead. See https://go.microsoft.com/fwlink/?linkid=2103067 for more information.

XML数据格式:(预期输出)

<OrderTemplate>
  <OrderTemplateId>1</OrderTemplateId>
  <OrderTemplateName>BBCSeat</OrderTemplateName>
  <OrderTemplateDescription>Boeing Business Class Seat</OrderTemplateDescription>
</OrderTemplate>

已经知道这是重复的问题,但是我在这里做错了什么编码。请引导我。

c# xml entity-framework asp.net-core-2.1 asp.net-core-3.1
1个回答
0
投票

只需在将它们投影到XML中之前选择它们。无论如何,这就是EF Core 2.1所做的。

 var orderTemplates =_context.OrderTemplates.Where(ordt=> ordt.Id == orderTempId).AsEnumerable();

 orderTemplate =
                  (from ordt in orderTemplates 
                   select new XElement("OrderTemplate",
                          new XElement("OrderTemplateId", ordt.Id),
                          new XElement("OrderTemplateName", ordt.Name),
                          new XElement("OrderTemplateDescription", ordt.Description)));
© www.soinside.com 2019 - 2024. All rights reserved.