(一)增加
往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
版权声明:本文为博主原创文章,转载请附上博文链接!


少有人走的路

















