【问题标题】:Edit data in Entity framework code first model在实体框架代码优先模型中编辑数据
【发布时间】:2013-01-02 22:24:34
【问题描述】:

在以下代码中,我的国家/地区=1、学校=2 和课程=3。 但在那之后,当我试图分配那个喜欢时, userdata.UserCountry.CountryId=Convert.ToInt32(国家)。它说“对象引用未设置为.......对象实例”表示空值。

[HttpPost]
    public ActionResult Settings(FormCollection frm)
    {

            UsersContext db = new UsersContext();

            var userdata = db.UserDetails.Where(k => k.UserId == WebSecurity.CurrentUserId).FirstOrDefault();

            string country = frm["UserCountry"]; // here I have 1.
            string school = frm["UserSchool"];
            string course = frm["UserCourse"];

            userdata.UserCountry.CountryId= Convert.ToInt32(country); // Here i have the null reference error.. !!
            userdata.UserSchool.SchoolId = Convert.ToInt32(school);
            userdata.UserCourse.CourseId = Convert.ToInt32(course);
            userdata.Link = frm["Link"];
            userdata.FullName = frm["FullName"];
            userdata.Email = frm["Email"];
            userdata.About = frm["About"];

            db.SaveChanges();

            return Content(Boolean.TrueString);
    }

这是模型:

public class UserDetail
{
    public int Id { get; set; }
    public int UserId { get; set; }
    [Required]
    [Display(Name="Full name")]
    public string FullName { get; set; }
    public string Link { get; set; }
    public bool? Verified { get; set; }

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

    [Display(Name="About")]
    public string About { get; set; }
    public virtual School UserSchool { get; set; }
    public virtual Course UserCourse { get; set; }

    [Display(Name = "Country")]
    public virtual Country UserCountry { get; set; }

}

谁能帮我解决这个问题...plz。

【问题讨论】:

    标签: asp.net-mvc entity-framework code-first


    【解决方案1】:

    尝试在查询结果中包含相关实体:

     var userdata = db.UserDetails
                      .Include("UserCountry")
                      .Include("UserSchool")
                      .Include("UserCourse")
                      .Where(k => k.UserId == WebSecurity.CurrentUserId)
                      .FirstOrDefault();
    

    顺便说一句,验证您是否确实拥有带有您搜索的 UserId 的 UserDetails。

    【讨论】:

    • 是的,我有 uderid 的用户详细信息。我试过你的代码,仍然有同样的错误
    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 2013-06-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多