EFCore学习(二)表的增册查改


(一)增加


往book表增加一条记录。

  Book book=new Book();
  book.Id = 1;
  book.Price = 20.8;
  book.PubTime= DateTime.Now;
  book.Title = "人间指南2";
  book.AuthorName="李幸福";
  con.Books.Add(book);
  await con.SaveChangesAsync();


(二)查询 

DbSet实现了IEnumerable<T>接口,因此可以对DbSet实施Linq操作来进行数据查询。

EFCore会把Linq操作转换为SQL语句。此时是面向对象,而不是面向数据库(SQL)


几个示例:

con.Books.Where(b=>b.Price>80)

Book b1=ctx.Books.Single(b=>b.Title=="kkkk");


OrderBy进行排序

IEnumerable<Book> books=con.Books.OrderByDescending(b=>b.Price);


con.Books.GroupBy(b=>b.AuthorName)

.Select(g=>new {Name=g.Key,BooksCount=g.Count(),MaxPrice=g.Max(b=>b.Price)});



代码:

static async Task  Main(string[] args)
{
    using (TestDbContext con = new TestDbContext())
    {
        //Book book=new Book();
        ////book.Id = 1;
        //book.Price = 20.8;
        //book.PubTime= DateTime.Now;
        //book.Title = "大话西游";
        //con.Books.Add(book);
        //await con.SaveChangesAsync(); 
        IQueryable<Book> res= con.Books.Where(s => s.Price > 50);
        foreach(var item in res)
        {
            Console.WriteLine(item.Title);
        }

        Book res1 = con.Books.Single(b => b.Title == "数学之美");
        Console.WriteLine($"{res1.Title},{res1.Price}\n");

        var res2= con.Books.OrderBy(s => s.Price);
        foreach(var item in res2)
        {
            Console.WriteLine($"{item.Title},{item.Price}");
        }

        Console.WriteLine($"\n\n");
        var res3= con.Books.GroupBy(b => b.AuthorName)
            .Select(g => new { Name = g.Key, BooksCount = g.Count(), MaxPrice = g.Max(b => b.Price) });
        foreach (var item in res3)
        {
            Console.WriteLine($"{item.Name}\t{item.BooksCount}\t{item.MaxPrice}");
        }

    }
    Console.WriteLine("ok");
}


查询结果:

image.png


(三)修改与删除


2.1 修改

要对数据进行修改,首先需要 把修改的数据查询出来,然后再对查询出来的对象进行修改,然后再执行SaveChangesAsync()保存修改。

var b=con.Books.Single(b=>b.Title="xxx");

b.AuthorName="junwu";

await conn.SaveChangesAsync();


2.2 删除 

删除 也是先把要删除的数据查询出来,然后再调用DbSet或者DbContext的Remove方法把对象删除,然后再执行SaveChangesAsync()保存修改。

var b=con.Books.Single(b=>b.Title="xxx");

conn.Remove(b); //也可以con.Books.Remove(b);

await conn.SaveChangesAsync();


代码:

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace ConsoleApp1
{
    internal class Program
    {
        static async Task  Main(string[] args)
        {
            using (TestDbContext con = new TestDbContext())
            {
                //Book book=new Book();
                ////book.Id = 1;
                //book.Price = 20.8;
                //book.PubTime= DateTime.Now;
                //book.Title = "大话西游";
                //con.Books.Add(book);
                //await con.SaveChangesAsync(); 
                IQueryable<Book> res= con.Books.Where(s => s.Price > 50);
                foreach(var item in res)
                {
                    Console.WriteLine(item.Title);
                }

                Book res1 = con.Books.Single(b => b.Title == "数学之美");
                Console.WriteLine($"{res1.Title},{res1.Price}\n");

                var res2= con.Books.OrderBy(s => s.Price);
                foreach(var item in res2)
                {
                    Console.WriteLine($"{item.Title},{item.Price}");
                }

                Console.WriteLine($"\n\n");
                var res3= con.Books.GroupBy(b => b.AuthorName)
                    .Select(g => new { Name = g.Key, BooksCount = g.Count(), MaxPrice = g.Max(b => b.Price) });
                foreach (var item in res3)
                {
                    Console.WriteLine($"{item.Name}\t{item.BooksCount}\t{item.MaxPrice}");
                }

                var b = con.Books.Single(b => b.Title == "数学之美");
                b.Price = 121;
                await con.SaveChangesAsync();
                Console.WriteLine("修改为121块");

                //新增一条记录
                Book book = new Book();
                book.Price = 22.8;
                book.PubTime = DateTime.Now;
                book.Title = "人间指南2";
                book.AuthorName = "李幸福";
                con.Books.Add(book);
                await con.SaveChangesAsync();

                Console.WriteLine("新增一条记录,按任何键删除这条记录");
                Console.ReadKey();

                var b2=con.Books.Single(s=>s.Title== "人间指南2");
                con.Remove(b2);  //con.Books.Remove(b2);
                await con.SaveChangesAsync();

            }
            Console.WriteLine("ok");
        }
    }

    public class Person
    {
        public long id { get; set; }
        public string name { get; set; }
        public int Age { get; set; }

        public string BrithPlace { get; set; }
    }

    public class Book
    {
        public long Id { get; set; }   //主键
        public string Title { get; set; }   //标题
        public DateTime PubTime { get; set; }  //发布日期

        public double Price { get; set; } //单价

        public string AuthorName { get; set; }  //作者
    }

    public class BookEntityConfig:IEntityTypeConfiguration<Book>
    { 
        public void Configure(EntityTypeBuilder<Book> builder) 
        {
            builder.ToTable("T_Books");
        }
    }

    public class PersonEntityConfig : IEntityTypeConfiguration<Person>
    {
        public void Configure(EntityTypeBuilder<Person> builder)
        {
            builder.ToTable("T_Persons");
        }
    }

    public class TestDbContext:DbContext
    {
        public DbSet<Book> Books { get; set; }
        public DbSet<Person> Persons { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            string connStr = "Server=.;Database=mytest;Trusted_Connection=True;MultipleActiveResultSets=true;Encrypt=false;";
            optionsBuilder.UseSqlServer(connStr);
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
        }
    }


}



代码下载:


链接:https://pan.baidu.com/s/1L5oBUVUCyg1THfW8xWLnYQ

提取码:ygaq 

--来自百度网盘超级会员V6勇哥的分享


--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
本帖最后由 勇哥,很想停止 于 2024-06-01 16:45:58 编辑

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年6月    »
1
2345678
9101112131415
16171819202122
23242526272829
30
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864