0

我正在开发一个 MVC 应用程序。

当我调用 context.SaveChanges 来更新特定记录时。更新未在数据库中注册。我也没有收到任何运行时错误。需要注意的是我的记录没有更新。我仍然看到相同的价值观。插入功能完美。

enter code here

public Admission Update(int stuid){

        VDData.VidyaDaanEntities context = new VDData.VidyaDaanEntities();
        VDData.Student_Master studentmaster = new VDData.Student_Master();

        studentmaster.Student_ID = stuid;
        studentmaster.Student_First_Name = this.FirstName;
        studentmaster.Student_Middle_Name = this.MiddleName;
        studentmaster.Student_Last_Name = this.LastName;
        studentmaster.Student_Address_1 = this.Address;
        studentmaster.Student_Address_2 = this.Address2;
        studentmaster.Student_City = this.City;
        studentmaster.Student_State = this.State;
        studentmaster.Student_Pin_Code = this.Pincode;

       context.SaveChanges(); // here it wont give any kind of error. it runs sucessfully. }
4

3 回答 3

1

首先获取要更新的实体:

var entity = obj.GetEntity(id);
entity.col1 = "value";
context.SaveChanges(entity);

希望这会有所帮助。

于 2013-05-14T13:01:40.463 回答
0

好像你想更新,所以你的代码应该是

VDData.Student_Master studentmaster = context.Student_Masters.Single(p=>p.Student_ID == stuid);

如果 Student_ID 是主键,则不应更改它。

public Admission Update(int stuid){

        VDData.VidyaDaanEntities context = new VDData.VidyaDaanEntities();
        //VDData.Student_Master studentmaster = new VDData.Student_Master();
//REPLACE WITH
VDData.Student_Master studentmaster = context.Student_Masters.Where(p=>p.Student_ID == stuid);

        studentmaster.Student_ID = stuid;
        studentmaster.Student_First_Name = this.FirstName;
        studentmaster.Student_Middle_Name = this.MiddleName;
        studentmaster.Student_Last_Name = this.LastName;
        studentmaster.Student_Address_1 = this.Address;
        studentmaster.Student_Address_2 = this.Address2;
        studentmaster.Student_City = this.City;
        studentmaster.Student_State = this.State;
        studentmaster.Student_Pin_Code = this.Pincode;

       context.SaveChanges();
于 2013-05-15T05:38:12.673 回答
0

context.SaveChanges();

你需要调用这个

context.Student_Masters.Add(studentmaster );

编辑:Abstraction向您介绍Context class并在您的上下文类中创建一个方法,如下所示,然后您可以在想要创建或更新对象时调用它。

public void SaveStudent_Master(Student_Master studentmaster)
    {
        using (var context = new VDData.VidyaDaanEntities())
        {
            if (studentmaster.Student_ID == 0)
            {
                context.Student_Masters.Add(studentmaster);
            }
            else if (studentmaster.Student_ID > 0)
            {
                //This Updates N-Level deep Object grapgh
                 //This is important for Updates  
                var currentStudent_Master = context.Student_Masters
                    .Single(s => s.Student_ID == studentmaster.Student_ID );

                context.Entry(currentStudent_Master ).CurrentValues.SetValues(studentmaster);                  
            }
            context.SaveChanges();
        }

然后在你的控制器中替换context.SaveChanges();_context.SaveStudent_Master(studentmaster);

于 2013-05-15T05:31:58.843 回答