zoukankan      html  css  js  c++  java
  • 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();
    }
  • 相关阅读:
    央视好节目整理
    IT项目各阶段管理
    使用mint-ui Loadmore组件时出现报错
    简单了解map,filter,some,every,forEach,for in,for of,find,用法
    h5简单学习总结
    video标签详解(转载)
    浏览器对象
    获取后三天的时间
    Map和Set以及iterable类型集合的循环遍历
    placeholder的样式设置
  • 原文地址:https://www.cnblogs.com/KQNLL/p/9420904.html
Copyright © 2011-2022 走看看