[英]Object reference not set to an instance of an object. MVC and Foreign Key
我什么都没试过:它返回以下消息: “System.NullReferenceException:'对象引用未设置为 object 的实例。'”
也许是因为我使用了同一个 class 的两个外键? 不知道..给我一个灯。 请大声笑。
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();
Class 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; }
}
Class 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; }
}
usuarios 没有创建,试试这个
while (rdr.Read())
{
var ate = new atendimento{
cartorios = new cartorios(),
usuarios=new usuarious()
}
....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.