通过调用DbSet<T>.FromSqlRaw()
,我可以调用数据库中的存储过程,它返回如下结果集:
Id VARCHAR(36)
FirstName VARCHAR(255)
LastName VARCHAR(255) NULL
Email VARCHAR(255) NULL
Numbers VARCHAR(?) NULL
Numbers
是一个VARCHAR
包含 JSON 数组的字段SearchContactsNumber
:
public sealed class SearchContactsNumber
{
public Guid IdNumber { get; set; }
public string Type { get; set; }
public string Number { get; set; }
}
因此,例如,结果集可能是这样的:
"34f8d20f-21da-11eb-a249-de3268ec1e72" | "Paul" | "Newman" | "paul.newman@gmail.com" | "[{"IdNumber":"481d2957-21da-11eb-a249-de3268ec1e72","Type":"Telephone","Number":"+440001122333"},{...},{...}]"
调试 TestController.Index 端点:
public sealed class SearchContacts
{
public Guid IdContact { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Company { get; set; }
public IEnumerable<SearchContactsNumber> Numbers { get; set; }
}
public class TestController : Controller
{
private readonly DbContext _context;
public TestController(DbContext context)
{
_context = context;
}
public IActionResult Index()
{
var set = _context.SearchContacts.FromSqlRaw<SearchContacts>($"CALL `SearchContacts`()");
return Ok(set.ToList());
}
}
返回:
如何归档 json 字符串的完整绑定?
我Pomelo.EntityFrameworkCore.MySql (3.2.3)
在 ASP.NET Core 3.1 MVC 项目中使用 MySQL 8 数据库。