c# - 检索数据上的“对象引用未设置为对象的实例”
问题描述
我试图从 SQL 数据库中检索数据。我正在使用实体框架核心。它从数据库中检索所需的数据。我可以在调试时看到数据,但数据没有分配给var类型的变量。仅供参考,变量类型的值为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调试时,它的显示
你调用的对象是空的
这里有什么问题?
解决方案
我们可以从您的代码中看到您收到以下邮件模板对象:Id = {aeced541-7003-437e-8f77-4605766fb62c}; MailHtml = "嗨,
非常感谢您的注册。这里是确认链接以继续进行..."; 模板类型 = 0;
在这里,您传递了一些我们不知道的 TemplateType 值
public async Task<string> GetMailTemplateByType(Models.TemplateTypes type)
{
在这里,您将该类型值与我们在调试器窗口中看到的 MailTemplate 对象中的 TemplateType 属性进行比较
var mailTemplate = await _userDbContext.MailTemplates.FirstOrDefaultAsync(mt => mt.TemplateType==((int)type));
但是如果 type 不为 0,则不会返回 MailTemplate 对象,因为我们在调试器窗口中看到的 MailTemplate 对象的 TemplateType 值为 0,因此 FirstOrDefaultAsync 将返回 null 值,请参阅“如果找不到匹配项,则错误返回 NullReferenceException”
推荐阅读
- android - 有没有办法在 Android 的键盘后面滚动?
- postgresql - time.sleep() 在 plpythonu 中有 60 秒的限制?
- javascript - 购物车和来电显示/类别
- java - Android AGP 4.2.0 + Java 11 编译失败
- sql - 如何在 Oracle SQL 中查找过去 90 天内没有评论的帖子
- image-processing - OpenCV - 计算图像中两个边缘之间的距离
- windows - 32 位 COM 对象的 CoCreateInstance 不会在 Windows 10 64 位中返回
- c# - 使用泛型添加 HTTP 客户端 - ASP.NET Core
- scripting - 用 tcl 处理大文件
- sql-server - 可选列上的 SQL Server 索引