【问题标题】:EF Stored Procedure. Map subquery in SELECT to List propertyEF 存储过程。将 SELECT 中的子查询映射到 List 属性
【发布时间】:2020-09-22 02:04:32
【问题描述】:

请帮助我将 SELECT 中的值列表映射到模型中的列表

我在这样的存储过程中有一个查询

SELECT Id, CustomerName, 
                    (
                            SELECT TOP(15) [Message]
                            FROM [dbo].[Messages] M
                            WHERE M.CustomerId = C.Id
                    ) AS CustomerMessages
          FROM [dbo].[Customers] C

我希望将其映射到我的代码中的模型

public class Customer
{
    public int Id { get; set; }
    public string CustomerName { get; set; }
    public List<string> CustomerMessages { get; set; }
}

我正在使用 EF 的 SqlQuery 方法:

Database.SqlQuery<Customer>

问题是调用存储过程后 CustomerMessages 为空。实现这种映射的正确方法是什么?

【问题讨论】:

    标签: sql entity-framework stored-procedures entity-framework-6


    【解决方案1】:

    以下将导致查询返回一个空字符串而不是NULL,它是一个非值。

    SELECT Id, CustomerName, 
    (
        SELECT TOP(15) COALESCE([Message], '')
            FROM [dbo].[Messages] M
        WHERE M.CustomerId = C.Id
     ) AS CustomerMessages
     FROM [dbo].[Customers] C
    

    如果[Message] 为NULL,查询将转到COALESCE 中的下一个选项,即''(空字符串)。这将不允许查询返回 NULL。在为我的用户创建 Excel 报告时,我经常使用这种技术,这样他们就不必处​​理结果集中的 NULL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 2019-03-01
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      相关资源
      最近更新 更多