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中新增了对数据进行批量操作的方法