LINQ TO EF中修改记录的问题

时间:2022-03-12 07:20:54

            QcInfoEntities context=new QcInfoEntities();
            DAL.Users user=new Users()
            {
                User_ID = Guid.Parse("8787D20E-CCCC-41DF-A44A-5A272B7FAFA6"), //主键
                User_Name = "131"
            };
            context.Users.Attach(user);
            context.Entry(user).State = EntityState.Modified;
            context.SaveChanges();

通常都是从数据库查出一条记录再修改的,但是我想直接NEW一个User_ID与数据库中主键User_ID相同的对象,再提交更新.问题是更新后其余的字段都变为了NULL.

10 个解决方案

#1


这个不是必然的么?

那你想要什么结果?

#2


我想只更新 User_Name 字段,别的不动

#3


你要这样做的话必须先根据User_ID查出来所有字段的值,实例化的时候一一赋值

#4


这样有什么意义么?

你既然想保持其他的值不变,到头来不还是要先将其他的值检索出来再赋值么?

#5


	    QcInfoEntities context=new QcInfoEntities();
            DAL.Users user=context.Users.Single(u=>u.User_ID==Guid.Parse("8787D20E-CCCC-41DF-A44A-5A272B7FAFA6"));
            user.User_Name = "131";
            
            //context.Users.Attach(user);
            //context.Entry(user).State = EntityState.Modified;
            context.SaveChanges();

#6


我记得有种方法是不用先查数据库的,只用连接一次数据库就可以修改.如果查的话要连接两次.

#7


你直接用 context执行UPDATE的SQL语句,就只用访问一次数据库了

#8


该回复于2013-11-12 17:04:19被管理员删除

#9


不错,学习了

#10


引用 7 楼 q107770540 的回复:
你直接用 context执行UPDATE的SQL语句,就只用访问一次数据库了

这个跟执行 两次的那个有什么区别  在 linq to entity 都能应用吗????

有没有什么弊端  不然就都用访问一次的了  这么写貌似简单一些啊。

#1


这个不是必然的么?

那你想要什么结果?

#2


我想只更新 User_Name 字段,别的不动

#3


你要这样做的话必须先根据User_ID查出来所有字段的值,实例化的时候一一赋值

#4


这样有什么意义么?

你既然想保持其他的值不变,到头来不还是要先将其他的值检索出来再赋值么?

#5


	    QcInfoEntities context=new QcInfoEntities();
            DAL.Users user=context.Users.Single(u=>u.User_ID==Guid.Parse("8787D20E-CCCC-41DF-A44A-5A272B7FAFA6"));
            user.User_Name = "131";
            
            //context.Users.Attach(user);
            //context.Entry(user).State = EntityState.Modified;
            context.SaveChanges();

#6


我记得有种方法是不用先查数据库的,只用连接一次数据库就可以修改.如果查的话要连接两次.

#7


你直接用 context执行UPDATE的SQL语句,就只用访问一次数据库了

#8


该回复于2013-11-12 17:04:19被管理员删除

#9


不错,学习了

#10


引用 7 楼 q107770540 的回复:
你直接用 context执行UPDATE的SQL语句,就只用访问一次数据库了

这个跟执行 两次的那个有什么区别  在 linq to entity 都能应用吗????

有没有什么弊端  不然就都用访问一次的了  这么写貌似简单一些啊。