【发布时间】:2022-02-01 12:58:16
【问题描述】:
我什么都试过了,一无所获!我收到一个错误:
System.NullReferenceException: '对象引用未设置为对象的实例。'
可能是因为我使用了同一个类的两个外键?我不知道...请给我一个灯。
public List<atendimento> ListarAtendimentos()
{
List<atendimento> lst = new List<atendimento>();
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
SqlCommand com = new SqlCommand("SELECT *, c.nome as nome_cartorio, a.status as status_atendimento, u.nome as nome_usuario FROM atendimento AS a INNER JOIN usuarios AS u ON u.id = a.id_usuario_cadastro INNER JOIN cartorios AS c ON a.id_cartorio = c.id", con);
SqlDataReader rdr = com.ExecuteReader();
while (rdr.Read())
{
atendimento ate = new atendimento();
ate.cartorios = new cartorios();
ate.id = Convert.ToInt32(rdr["id"]);
ate.id_cartorio = Convert.ToInt32(rdr["id_cartorio"]);
ate.cartorios.nome = rdr["nome_cartorio"].ToString();
ate.titulo = rdr["titulo"].ToString();
ate.descricao = rdr["descricao"].ToString();
ate.data_abertura = Convert.ToDateTime(rdr["data_abertura"]);
if (!rdr.IsDBNull(rdr.GetOrdinal("data_conclusao")))
{
ate.data_conclusao = Convert.ToDateTime(rdr["data_conclusao"]);
}
ate.contato = rdr["contato"].ToString();
ate.origem = rdr["origem"].ToString();
ate.prioridade = rdr["prioridade"].ToString();
ate.status = rdr["status_atendimento"].ToString();
ate.usuarios.nome = rdr["nome_usuario"].ToString();
ate.id_usuario_cadastro = Convert.ToInt32(rdr["id_usuario_cadastro"]);
ate.id_usuario_atendimento = Convert.ToInt32(rdr["id_usuario_atendimento"]);
lst.Add(ate);
}
return lst;
}
}
问题出在下面一行:
ate.usuarios.nome = rdr["nome_usuario"].ToString();
第 1 类:
public partial class atendimento
{
public atendimento()
{
this.lancamentos = new HashSet<lancamentos>();
}
public int id { get; set; }
public int id_cartorio { get; set; }
public string titulo { get; set; }
public string descricao { get; set; }
public Nullable<System.DateTime> data_abertura { get; set; }
public Nullable<System.DateTime> data_conclusao { get; set; }
public string contato { get; set; }
public string origem { get; set; }
public string prioridade { get; set; }
public string status { get; set; }
public int id_usuario_cadastro { get; set; }
public int id_usuario_atendimento { get; set; }
public virtual usuarios usuarios { get; set; }
public virtual cartorios cartorios { get; set; }
public virtual usuarios usuarios1 { get; set; }
public virtual ICollection<lancamentos> lancamentos { get; set; }
}
第 2 类:
public partial class usuarios
{
public usuarios()
{
this.anexos = new HashSet<anexos>();
this.atendimento = new HashSet<atendimento>();
this.atendimento1 = new HashSet<atendimento>();
this.lancamentos = new HashSet<lancamentos>();
this.lancamentos1 = new HashSet<lancamentos>();
}
public int id { get; set; }
public string nome { get; set; }
public string email { get; set; }
public string senha { get; set; }
public string status { get; set; }
public string acesso { get; set; }
public int id_setor { get; set; }
public virtual ICollection<anexos> anexos { get; set; }
public virtual ICollection<atendimento> atendimento { get; set; }
public virtual ICollection<atendimento> atendimento1 { get; set; }
public virtual ICollection<lancamentos> lancamentos { get; set; }
public virtual ICollection<lancamentos> lancamentos1 { get; set; }
public virtual setor setor { get; set; }
}
【问题讨论】:
-
您不能在空值上使用
ToString()。如果错误出现在指定的行上,请在尝试使用ToString()之前检查值是否为空(或DBNull.Value)。 -
我将您的答案与 Serge 的答案合并,并且成功了!哈哈哈哈哈...谢谢
标签: c# ajax asp.net-mvc asp.net-mvc-4