• Entity Framework 普通操作(复习用)——感觉有点不对,需要撸代码验证


    方式一,使用Attach,并更新某个属性的值(注意,不是所有的属性都作修改)

    using (var context = new EFContext())
    {
    //方式一
    var entity = context.Citys.Find(4);
    context.Citys.Attach(entity);
    entity.Name = "肇庆";
    context.SaveChanges();
    }

    将一个entity标记为System.Data.Entity.EntityState.Modified更新时会更新所有的列(而不仅是修改了列),实际该使用哪种方式视场合而定。model对象可以不是从数据库获取的

    using (var context = new EFContext())
    {
        //方式二
        var model = context.Citys.Find(5);
        model.Name = "潮州";
        context.Entry(model).State = System.Data.Entity.EntityState.Modified;
        context.SaveChanges();
    }

    普通方式,全字段更新

     using (var db = new DBModel())
            {
                var student = db.students.FirstOrDefault(s => s.name == "萝莉");
                student.age = 13;   //将萝莉的年龄改为13岁
                db.SaveChanges();
            }

    普通方式删除

     using (var db = new DBModel())
            {
                var student = db.students.FirstOrDefault(s => s.name == "萝莉");    //查找萝莉
                db.students.Remove(student);    //删除萝莉
                db.SaveChanges();
            }

    在ef中使用sql语句

    using (var db = new DBModel())  //创建数据库上下文
    {
        //同步的方式执行SQL,并返回受影响的行数
        int result = db.Database.ExecuteSqlCommand(@"CREATE TABLE `test`.`test` (
                     `id` INT NOT NULL,
                     PRIMARY KEY(`id`)); ");
    
        //使用SqlParameter传值可以避免SQL注入
        var p_name = new SqlParameter("@name", "萝莉");
        var p_age = new SqlParameter("@age", 13);
    
        //如果使用的是MySql数据库 需要SqlParameter把替换为MySqlParameter
        //var p_name = new MySqlParameter("@name", "萝莉");
        //var p_age = new MySqlParameter("@age", 13);
    
        //更改学生年龄
        result = db.Database.ExecuteSqlCommand(@"UPDATE `test`.`student`
                                               SET `age` = @age
                                               WHERE `name` = @name;", p_age, p_name);
    
        //异步的方式执行SQL,并返回受影响的行数
        Task<int> result2 = db.Database.ExecuteSqlCommandAsync("DROP TABLE `test`.`test`;");
    }
    using (var db = new DBModel())  //创建数据库上下文
    {
        //查询叫萝莉的学生信息,并修改她的年龄
        student result1 = db.students.SqlQuery("SELECT  * FROM test.student WHERE name = '萝莉'").FirstOrDefault();
        result1.age = 13;   //通过实体集合下.SqlQuery查询到的数据,修改之后是可以保存到数据库的
        student result2 = db.Database.SqlQuery<student>("SELECT  * FROM test.student WHERE name = '旺财'").FirstOrDefault();
        result2.age = 21;   //因为使用的是.Database.SqlQuery查询到的,所以这里的修改不会保存到数据库
        //如果希望.Database.SqlQuery下查出的数据在修改后也能保存到数据库
        student result3 = db.Database.SqlQuery<student>("SELECT  * FROM test.student WHERE name = '小明'").FirstOrDefault();
        result3.age = 36;
        db.Entry<student>(result3).State = System.Data.Entity.EntityState.Modified; //通知数据上下文,这条记录也被修改了
        db.SaveChanges();
    }
  • 相关阅读:
    js 兼容各类手机 的写法 待续
    css 兼容 各类手机的写法 待续
    数组的解构赋值
    let 和 const 命令
    ECMAScript 6 简介
    webpack4新建一个项目
    Webpack 4 Tutorial: from 0 Conf to Production Mode
    webpack4.1.1的使用详细教程
    git merge git pull时候遇到冲突解决办法git stash
    Git 常用命令速查表(图文+表格)
  • 原文地址:https://www.cnblogs.com/KQNLL/p/9420904.html
Copyright © 2020-2023  润新知