zoukankan      html  css  js  c++  java
  • EntityFramework 更新数据的几种方法

    第一种:

    先从数据库中取出数据,然后再更新字段。效率较低,需要2次数据库操作;

    using (var db = new Entities())
    {
        var data = db.Member.Find(5);
        data.Name = "new name";
        db.SaveChanges();
    }

    生成的sql语句是:

    select * from Member where ID=5
    update Member set Name = 'new name' where ID=5

    第二种:

    根据主键更新某个字段。如下虽然定义的变量里有password,但是没有设置ismodified=true,所以在savechanges时只会更新name的值

    using (var db = new Entities())
    {
        var data = new Member() { ID = 5, Name = "aa", Password = "aa" };
        db.Entry(data).State = EntityState.Unchanged;// 或db.Member.Attach(data);  
        db.Entry<Member>(data).Property("Name").IsModified = true;
        db.SaveChanges(); 
    }

    生成的sql语句是:

    update Member set Name='aa' where ID=5

    第三种:

    根据主键更新所有字段,如下虽然未定义password,但到数据库中会更新为null

    using (var db = new ScratchDB2Entities())
    {
        var data = new Member() { ID = 5, Name = "aa" };
        db.Entry(data).State = EntityState.Modified;
        db.SaveChanges();
    }

    生成的sql语句是:

    update Member set Name='aa',Password=null where ID=5
  • 相关阅读:
    C语言volatile
    2017-10-12 下一步计划
    关于步进电机的半流设置、衰减设置
    压力校准仪开发-----步进电机驱动
    kei中实现在线仿真看波形
    42步进电机与57步进电机
    网上的说TB6560存在的问题
    TB6560步进电机驱动板
    继承
    iOS设计模式——单例模式
  • 原文地址:https://www.cnblogs.com/xbzhu/p/12152503.html
Copyright © 2011-2022 走看看