Database is not updated in Entity Framework in .NET Framework

Viewed 63
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;
using Email_System.Models;
using System.Data.Entity;

namespace Email_System.Pages
{
    public partial class EditProfile : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            /*
            EmailDbContext db = new EmailDbContext();
            string username = Session["user"].ToString();
            User u = db.Users.Where(b => b.UserName == username).FirstOrDefault();
            fname.Text = u.UserFirstName.ToString();
            lname.Text = u.UserLastName.ToString();
            date.Text = u.DOB.ToString();
            fname.Text = Session["fname"].ToString();
            lname.Text = Session["lname"].ToString();
            date.Text = Session["dob"].ToString();
        }

        protected void Edit_Click(object sender, EventArgs e)
        {
            EmailDbContext db1 = new EmailDbContext();
            string uname = Session["user"].ToString();
            Label1.Text = uname;
            User u = db1.Users.Where(b => b.UserName == uname).FirstOrDefault();

            db1.Entry(u).State = EntityState.Modified;
            u.UserFirstName=fname.Text;
            u.UserLastName=lname.Text;
            u.DOB = DateTime.Parse(date.Text);
            Session["fname"] = fname.Text;
            Session["lname"] = lname.Text;
            Session["dob"] = date.Text;
            db1.Users.Attach(u);
            db1.SaveChanges();
        }
    }
}

This above section is say EditProfile.aspx.cs. In this code, I want to update my fname, lname and dob but when I click button it is not updating the database. I am using EF in .NET Framework.

What is the problem?

1 Answers

I think you just put the state modified command in the wrong order, I'd try:

protected void Edit_Click(object sender, EventArgs e)
    {
        EmailDbContext db1 = new EmailDbContext();
        string uname = Session["user"].ToString();
        Label1.Text = uname;
        User u = db1.Users.Where(b => b.UserName == uname).FirstOrDefault();

        u.UserFirstName=fname.Text;
        u.UserLastName=lname.Text;
        u.DOB = DateTime.Parse(date.Text);
        Session["fname"] = fname.Text;
        Session["lname"] = lname.Text;
        Session["dob"] = date.Text;
        db1.Users.Attach(u);
        db1.Entry(u).State = EntityState.Modified;
        db1.SaveChanges();
    }
Related