EF Core-CRUD
在DbContext中注册之后的表,使用其对象直接.后进行操作即可
插入数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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方法提交操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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把目标数据查询出来,才能对其进行修改操作
当查到这条对象时,我们直接对其属性进行就该,最后提交到表中即可
1 2 3 4 5 6 7 8 9 10
| 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方法将对象删除,最后提交到表中即可
1 2 3 4 5 6 7 8 9 10 11
| 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中新增了对数据进行批量操作的方法