Entity Framework使用DBContext实现增删改查

  • Post category:C#

以下是使用Entity Framework和DBContext实现增删改查的完整攻略:

1. 什么是Entity Framework

Entity Framework是一个ORM(对象关系映射)框架,它可以将数据库中的表映射到.NET中的实体类,从而简化了与的交互。Entity Framework支持多种数据库,包括SQL Server、MySQL、Oracle等。

2. 什么是DBContext

DBContext是Entity Framework中的一个核心类,它表示一个数据库会话。DBContext可以用于执行各种数据库操作,包括查询、插入、更新和删除。

3. 如何使用DBContext实现增删改查

使用DBContext实现增删改查按照以下步骤操作:

3.1. 步骤1:创建实体类

首先,我们需要创建一个实体类,用于表示数据库中的表。实体类应该包含与表中列对应的属性。

以下是示例,演示如何创建一个名为Student的实体类:

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

在上面的代码中,我们创建了一个名为Student的实体类,它包含IdNameAge三个属性。

3.2. 步骤2:创建DBContext类

接下来,我们需要创建一个DBContext类,用于表示一个数据库会话。DBContext类应该包含与数据库表对应的DbSet属性。

以下是一个示例,演示如何创建一个名为SchoolContext的DBContext类:

public class SchoolContext : DbContext
{
    public DbSet<Student> Students { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=SchoolDB;Trusted_Connection=True;");
    }
}

在上面的代码中,我们创建了一个名为SchoolContext的DBContext类,它包含一个名为StudentsDbSet属性,表示数据库中的Students表。我们还重写了OnConfiguring方法,用于配置数据库连接字符串。

3.3. 步骤3:实现增删改查操作

现在,我们可以使用DBContext类执行各种数据库操作,包括查询、插入、更新和删除。

以下是一个示例,演示如何使用DBContext类实现增删改查操作:

using (var context = new SchoolContext())
{
    // Insert
    var student = new Student { Name = "John", Age = 18 };
    context.Students.Add(student);
    context.SaveChanges();

    // Update
    student.Age = 19;
    context.SaveChanges();

    // Delete
    context.Students.Remove(student);
    context.SaveChanges();

    // Query
    var students = context.Students.Where(s => s.Age > 20).ToList();
}

在上面的代码中,我们使用Add方法插入一个新的学生记录,并使用SaveChanges方法保存更改。我们使用Remove方法删除学生记录,并使用SaveChanges方法保存更改。我们使用Where方法查询年龄大于20的学生记录,并使用ToList方法将结果转换为列表。

3.4. 步骤4:使用LINQ查询数据

除了使用DBContext类执行增删改查操作外,我们还可以使用LINQ查询数据。

以下是一个示例,演示如何使用LINQ查询学生记录:

using (var context = new SchoolContext())
{
    var students = from s in context.Students
                   where s.Age > 20
                   select s;

    foreach (var student in students)
    {
        Console.WriteLine("Name: {0}, Age: {1}", student.Name, student.Age);
    }
}

在上面的代码中,我们使用fromwhere关键字查询年龄大于20的学生记录,并使用select关键字选择学生的姓名和年龄。我们使用foreach循环遍历查询结果,并输出学生的姓名和年龄。

4. 示例1:使用DBContext实现增删改查

在这个示例中,我们将演示如何使用DBContext实现增删改查。按照以下步骤操作:

  1. 创建一个名为Student的实体类。
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

在上面的代码中,我们创建了一个名为Student的实体类,它包含IdNameAge三个属性。

  1. 创建一个名为SchoolContext的DBContext类。
public class SchoolContext : DbContext
{
    public DbSet<Student> Students { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=SchoolDB;Trusted_Connection=True;");
    }
}

在上面的代码中,我们创建了一个名为SchoolContext的DBContext类,它包含一个名为StudentsDbSet属性,表示数据库中的Students表。我们还重写了OnConfiguring方法,用于配置数据库连接字符串。

  1. Program.cs文件中,使用DBContext类执行增删改查操作。
using (var context = new SchoolContext())
{
    // Insert
    var student = new Student { Name = "John", Age = 18 };
    context.Students.Add(student);
    context.SaveChanges();

    // Update
    student.Age = 19;
    context.SaveChanges();

    // Delete
    context.Students.Remove(student);
    context.SaveChanges();

    // Query
    var students = context.Students.Where(s => s.Age > 20).ToList();
}

在上面的代码中,我们使用Add方法插入新的学生记录,并使用SaveChanges方法保存更改。我们使用Remove方法删除学生记录,并使用SaveChanges方法保存更改。我们使用Where方法查询年龄大于20的学生记录,并使用ToList方法将结果转换为列表。

5. 示例2:使用LINQ查询数据

在这个示例中,我们将演示如何使用LINQ查询学生记录。按照以下步骤操作:

  1. 创建一个名为Student的实体类。
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

在上面的代码中,我们创建了一个名为Student的实体类,它包含IdNameAge三个属性。

  1. 创建一个名为SchoolContext`的DBContext类。
public class SchoolContext : DbContext
{
    public DbSet<Student> Students { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=SchoolDB;Trusted_Connection=True;");
    }
}

在上面的代码中,我们创建了一个名为SchoolContext的DBContext类,它包含一个名为StudentsDbSet属性,表示数据库中的Students表我们还重写了OnConfiguring方法,用于配置数据库连接字符串。

  1. Program.cs文件中,使用LINQ查询学生记录。
using (var context = new SchoolContext())
{
    var students = from s in context.Students
                   where s.Age > 20
                   select s;

    foreach (var student in students)
    {
        Console.WriteLine("Name: {0}, Age: {1}", student.Name, student.Age);
    }
}

在上面的代码中,我们使用fromwhere关键字查询年龄大于20的学生记录,并使用select关键字选择学生的姓名和年龄。我们使用foreach循环遍历查询结果,并输出学生的姓名和年龄。

结论

通过以上步骤,我们可以使用DBContext实现增删改查操作,并使用LINQ查询数据。我们可以创建一个实体类,用于表示数据库中的表。我们可以创建一个DBContext类,用于表示一个数据库会话。我们可以使用DBContext类执行各种数据库操作,包括查询、插入、更新和删除。我们还可以使用LINQ查询数据,从而简化了与数据库的交互。