EFCore-CRUD
EF Core-CRUD
在DbContext中注册之后的表,使用其对象直接.后进行操作即可
插入数据
static async Task Main(string[] args)
{
using (var myDbContext = new MyDbContext())
{
var person = new Person();
person.Age = 18;
person.Address = "JiLin";
person.Name = "Xiaobai";
// 将对象添加到数据库中
myDbContext.Persons.Add(person);
// 提交更改(调用异步的提交方法)
await myDbContext.SaveChangesAsync();
}
}
查询(LINQ)
DbSet实现了IEnumerable<T>接口,所以我们可以使用LINQ语句直接对数据库进行查询
但其实,LINQ在EF Core中的方法和他在.NET框架中的方法不是一个方法,但用法完全相同
注:查询操作不需要调用SaveChanges方法提交操作
class Program
{
static async Task Main(string[] args)
{
using (var myDbContext = new MyDbContext())
{
var persons = myDbContext.Persons.Select(p => p);
foreach (var person in persons)
{
Console.WriteLine($"Name: {person?.Name}, Age: {person?.Age},Address: {person?.Address}");
}
}
}
}
修改
在修改之前,我们需要先使用LINQ把目标数据查询出来,才能对其进行修改操作
当查到这条对象时,我们直接对其属性进行就该,最后提交到表中即可
static async Task Main(string[] args)
{
using (var myDbContext = new MyDbContext())
{
var person = myDbContext.Persons.Single(p => p.Name == "小白");
person.Name = "xiaobai";
await myDbContext.SaveChangesAsync();
}
}
删除
在删除之前,我们需要先使用LINQ把目标数据查询出来,然后调用DbSet或者DbContext中的Remove方法将对象删除,最后提交到表中即可
static async Task Main(string[] args)
{
using (var myDbContext = new MyDbContext())
{
var person = myDbContext.Persons.Single(p => p.Id == 3);
myDbContext.Persons.Remove(person);
await myDbContext.SaveChangesAsync();
}
}
总结
这种模型驱动开发思想的ORM框架,学习更复杂,但使用起来更加方便
它将类和表绑定在一起,查询时使用LINQ语句,当查到对象之后就将数据库记录和类的对象绑定到一起,直接对对象进行操作,之后推送到表中记录即可
EF Core 7中新增了对数据进行批量操作的方法