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();

原文地址:https://www.cnblogs.com/liuyang95/p/12944930.html