• Entity Framework Core使用笔记③


    简单的查询和插入,修改

    插入:

    例:Contex.Book.Add(book);

    Context的add方法是追踪book对象;

    例:Contex.SaveChanges();

    检查所有追踪的对象;

    读取每个对象状态;

    生成sql语句;

    执行sql语句;

    如果返回数据,获取这些数据返回值;

            private readonly MyContext context;
            public WeatherForecastController( MyContext context)
            {
                this.context = context;
            }
    
    
            [HttpGet]
            public int Get()
            {
                var sort=new Sort
                {
                    Types = "IT",
                    BookId="1"
                };
                //连接数据库已经注册了
                context.Add(sort);
                return  context.SaveChanges();
    
            }

     批量插入可以使用context.AddRange

    查询:

       private readonly MyContext context;
            public WeatherForecastController( MyContext context)
            {
                this.context = context;
            }
    
    
            [HttpGet]
            public List<Sort> Get()
            {
                return context.Sorts.ToList();
    
            }

     这个Tolist遇到的时候才做的查询,前面都是在拼表达式。

    或者便利获取到,但是会影响性能,因为便利时会context没有关闭。

    查询的过滤语句

     查询的方法linq方法

    ToList(); 返回集合

    First(); 返回第一调数据,没有抛异常

    FirstOrDefault(); 和上面一样,但没数据不抛异常

    single();多余一条都会抛异常

    SingleOrDefault();两和以上条会异常,

    Last();需要排序

    LastOrDefault();

    Count();

    LongCount();

    Min();

    Max();

    Average();

    LIKE查询:

    //Name like "%11%"

    linq:where(x=>x.Name.Contains("11"));

    EFcore:where(x=>x.EF.Functions.like(x.Name,"%11%"));

    修改数据:

     private readonly MyContext context;
            public WeatherForecastController( MyContext context)
            {
                this.context = context;
            }
    
    
            [HttpGet]
            public int Get()
            {
                var sort = context.Sorts.FirstOrDefault();
                if (sort != null) {
                    sort.Types = "child";               
                }
                return context.SaveChanges();
            }

    修改了第一个行的Types

     因为这个对象第一列做了查询一直被dbcontext一直被追踪。

    上面的都是在线修改,加载到内存去修改,EFcore也支持离线修改,使用update方法。

    删除:

    删除需要追踪那条数据,使用它的remove()方法。

    原始sql的支持

    存储过程:

    context.Database.ExecuteSqlCommand("exec...");

    执行查询:

    Dbset.Fromsql();

  • 相关阅读:
    English trip V1
    English trip V1
    第一类斯特林数
    bzoj 3601 一个人的数论
    bzoj 4407 于神之怒加强版
    bzoj 2693 jzptab
    bzoj 4184 shallot
    luogu P3920 [WC2014]紫荆花之恋
    bzoj 4269 再见Xor
    luogu P2183 [国家集训队]礼物
  • 原文地址:https://www.cnblogs.com/liuyang95/p/12944930.html
Copyright © 2020-2023  润新知