ef存储过程在“选择到列表”属性中Map子查询

uemypmqf  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(424)

请帮助我将select中的值列表Map到模型中的列表
我在存储过程中有这样一个查询

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

我想把它Map到我的代码中的一个模型

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为null。实现这种Map的正确方法是什么?

dkqlctbz

dkqlctbz1#

下面将导致查询返回一个空字符串,而不是null,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。我经常在为用户创建excel报表时使用这种技术,这样他们就不必处理结果集中的null。

相关问题