Entity Framework Core
实体框架数据访问技术的轻量型、可扩展、开源、跨平台版本。
49 个问题
我有一个从SQL创建数据CSV的方法。当我在 SQL 中运行 SQL 字符串时,我会收到行,但是当我尝试在应用程序中运行 FromSqlRaw 时,它不会返回任何数据。我正在离开原始 SQL 查询文档,但我找不到我做错了什么。
public RequestAttachment GetExportCsv(string pPms, string pType)
{
//I think I need to use List<object> instead of List<CsvExport> to get the final result into a list of strings to be added to the CSV?
List<object> lstExports = _context.CsvExports
.FromSqlRaw("EXEC dbo.EEPayableExtract @p_PMS = {0}, @p_Type = {1}", pPms, pType)
.ToList<object>();
//generate csv
StringBuilder sb = new();
foreach (var item in lstExports)
{
string[] arrExports = (string[])item;
foreach (var data in arrExports)
{
//Append data with comma(,) separator.
sb.Append(data + ',');
}
//Append new line character.
sb.Append("\r\n");
}
//RequestAttachment is my file model
return new RequestAttachment
{
FileName = "UploadLineItems",
Extension = ".csv",
DataFiles = Encoding.ASCII.GetBytes(sb.ToString())
};
}
我的 DbContext 也声明我的模型是无密钥的,正如我在其他一些类似帖子中看到的那样。
modelBuilder.Entity<CsvExport>(entity =>
{
entity.HasNoKey();
});
我尝试将其分配给列表,但它仍然不返回数据。
var list = _context.CsvExports
.FromSqlRaw("EXEC dbo.EEPayableExtract @p_PMS = {0}, @p_Type = {1}", pPms, pType)
.ToList();
我还尝试按照这篇文章中的建议添加(EF Core 存储过程 FromSqlRaw 不提供更新的值),但仍然没有数据。.AsNoTracking()
List<object> lstExports = _context.CsvExports
.FromSqlRaw("EXEC dbo.EEPayableExtract @p_PMS = {0}, @p_Type = {1}", pPms, pType)
.AsNoTracking()
.ToList<object>();
Note:此问题总结整理于:FromSqlRaw in Entity Framework calling stored procedure, returns no data
我创建了一个示例项目进行测试,我可以通过 来获取值。FromSqlRaw
我认为您的代码是正确的,您可以按照以下步骤进行故障排除。
SSMS
我的测试步骤
FromSqlRaw
我认为您的代码是正确的,您可以按照以下步骤进行故障排除。
SSMS
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。
注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。