(一)增加
往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"); }
查询结果:
(三)修改与删除
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
版权声明:本文为博主原创文章,转载请附上博文链接!

