【发布时间】:2020-09-02 15:31:22
【问题描述】:
我试图从 SQL 数据库中检索数据。我正在使用 Entity Framework 核心。它从数据库中检索所需的数据。我可以在调试时看到数据,但数据没有分配给 var 类型的变量。仅供参考,变量 type 的值是 0 并且它基本上是一个 enum,我将其类型转换为 int。下面是代码
public async Task<string> GetMailTemplateByType(Models.TemplateTypes type)
{
var mailTemplate = await _userDbContext.MailTemplates.FirstOrDefaultAsync(mt => mt.TemplateType==((int)type));
return mailTemplate.MailHtml;
}
这是定义:
var HtmlTemplate = await _coreDataManager.GetMailTemplateByType(TemplateTypes.Activation);
当使用 try catch 进行调试时,它会显示
对象引用未设置为对象的实例
这里有什么问题?
【问题讨论】:
-
您可以从检查 mailTemplate 的值开始。
-
除非您的 ((int)type) 在上面的示例中等于 0,否则它不会返回您在调试器中显示的邮件模板
-
您确定您收到任何数据吗?如果 linq 没有找到感兴趣的数据,它会以 null 响应,如果 string 为 null .. 它为 null。您应该检查 mailTemplate 是否为 null (try{ ...}catch(NullReferenceException err){ Console.Writeline(err.Message);} 如果它显示相同,则您刚刚捕获了 null 异常,这确实意味着您试图找到不存在的东西。
-
是的,mailTemplate 为空,但我可以在第一个屏幕截图中看到我的数据库中的数据
标签: c# linq entity-framework-core