无法将int隐式转换为模型类型

时间:2013-09-15 14:12:29

标签: c# asp.net-mvc ado.net

您好我有两个技术人员和专业的模型类我通过crating专业外键列给表关系我想用这个外键列创建Dropdownlist当我将此模型映射到SqlReader以获取插入函数时我有错误喜欢不能隐式地将int转换为model.profession。

型号代码

public class Technician
{   
     [ScaffoldColumn (false)]
     public int Id { get; set; }

     [Required]
     [Display(Name = "Name")]
     public string Name { get; set; }


     [Required]
     public Profession Profession { get; set; }

}

public class Profession
{
    [Key]
    public int ProfessionId { get; set; }
    public string ProfessionType { get; set; }
}

Db类代码

SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
    Technician technician = new Technician();
    technician.Id = Convert.ToInt32(dr["techId"]);

    technician.Name = dr["techName"].ToString();

    technician.Profession = Convert.ToInt32(dr["primeProfessionId"]);
    Jobtechnicians.Add(technician);`
}

1 个答案:

答案 0 :(得分:1)

错误在这里很清楚。 cannot implicitly convert int to model.profession编译器说它不知道如何将Int32转换为Profession

technician.Profession = Convert.ToInt32(dr["primeProfessionId"]);

在上面一行中,您尝试将int值设置为Profession

我认为Profession是一个类。所以你要在那里设置Profession的实例。

像这样的事情

technician.Profession = FindProfessionByProfessionId(Convert.ToInt32(dr["primeProfessionId"]));

private Profession FindProfessionByProfessionId(int professionId)
{
    //find profession instance or create one and return here 
}