繁体   English   中英

Object 引用未设置为 object 的实例。 MVC 和外键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM