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

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

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

  1. SELECT Id, CustomerName,
  2. (
  3. SELECT TOP(15) [Message]
  4. FROM [dbo].[Messages] M
  5. WHERE M.CustomerId = C.Id
  6. ) AS CustomerMessages
  7. FROM [dbo].[Customers] C

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

  1. public class Customer
  2. {
  3. public int Id { get; set; }
  4. public string CustomerName { get; set; }
  5. public List<string> CustomerMessages { get; set; }
  6. }

我正在使用ef的sqlquery方法:

  1. Database.SqlQuery<Customer>

问题是调用存储过程后customermessages为null。实现这种Map的正确方法是什么?

dkqlctbz

dkqlctbz1#

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

  1. SELECT Id, CustomerName,
  2. (
  3. SELECT TOP(15) COALESCE([Message], '')
  4. FROM [dbo].[Messages] M
  5. WHERE M.CustomerId = C.Id
  6. ) AS CustomerMessages
  7. FROM [dbo].[Customers] C

如果 [Message ]为空,则查询将转到合并中的下一个选项“”(空字符串)。这将不允许查询返回null。我经常在为用户创建excel报表时使用这种技术,这样他们就不必处理结果集中的null。

相关问题