C#使用Entity Framework Core处理数据库(三)

Entity Framework Core(EF Core)是一个轻量级、跨平台的对象关系映射(ORM)框架,用于在.NET应用程序中处理数据库操作。它提供了一种将数据库中的数据映射到.NET对象模型的方法,使开发人员可以使用面向对象的方式进行数据库操作,而无需直接编写SQL语句。
上一篇文章讲了在C#中EF Core查询和加载模式:C#使用Entity Framework Core处理数据库(二)
接下来讲讲使用EF Core操作数据

1.插入实体

要使用Entity Framework Core插入实体,你需要首先创建一个DbContext类,并在其中包含用于访问数据库的DbSet属性。然后,你可以实例化实体对象并将其添加到相应的DbSet属性中。最后,调用SaveChanges()方法以将更改保存到数据库中。

// 创建实体类
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
// 创建DbContext类
public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("your_connection_string");
    }
}
// 插入实体
using (var context = new AppDbContext())
{
    var newProduct = new Product { Name = "New Product", Price = 100 };
    context.Products.Add(newProduct);
    context.SaveChanges();
}

2.更新实体

要更新实体,首先检索要更新的实体对象,然后对其属性进行更改,并最终调用SaveChanges()方法将更改保存到数据库中。以下是一个更新实体的示例:

// 更新实体
using (var context = new AppDbContext())
{
    var productToUpdate = context.Products.FirstOrDefault(p => p.Id == 1); // 假设要更新Id为1的产品
    if (productToUpdate != null)
    {
        productToUpdate.Name = "Updated Product";
        productToUpdate.Price = 150;
        context.SaveChanges();
    }
}

3.删除实体

要删除实体,首先检索要删除的实体对象,然后将其从DbContext中的DbSet属性移除,并最终调用SaveChanges()方法将更改保存到数据库中。以下是一个删除实体的示例:

// 删除实体
using (var context = new AppDbContext())
{
    var productToDelete = context.Products.FirstOrDefault(p => p.Id == 1); // 假设要删除Id为1的产品
    if (productToDelete != null)
    {
        context.Products.Remove(productToDelete);
        context.SaveChanges();
    }
}

4.事务

事务是指作为单个逻辑工作单元执行的操作集合,这些操作要么全部成功完成并永久生效,要么全部失败并回滚到之前的状态。在数据库系统中,事务用于确保数据操作的一致性和完整性。
事务通常具有以下四个标准特性(ACID):

  • 原子性(Atomicity):事务中的所有操作要么全部成功完成,要么全部失败回滚,没有部分成功的情况。
  • 一致性(Consistency):事务使得数据从一个一致的状态转变到另一个一致的状态,不会破坏数据完整性约束。
  • 隔离性(Isolation):事务在并发执行时,每个事务的操作对其他事务是隔禅的。这意味着每个事务对数据的操作应该互相独立,避免相互影响。
  • 持久性(Durability):一旦事务被提交,其对数据的改变应该是永久性的,即使系统发生故障也不会丢失。
    在编程中,使用事务可以确保一组操作要么全部成功,要么全部撤销,以确保数据的完整性和一致性。
隔离级别 允许的完整性问题
读未提交 (Read Uncommitted) 无锁 脏读 (Dirty Read), 非重复读 (Non-Repeatable Read)
读已提交 (Read Committed) 读取时加共享锁 非重复读 (Non-Repeatable Read), 幻读 (Phantom Read)
可重复读 (Repeatable Read) 读取时加共享锁 幻读 (Phantom Read)
串行化 (Serializable) 读取时加排他锁

定义显示事物
在Entity Framework Core中,可以使用DbContext类的Database 属性来定义和控制事务。以下是一些示例代码,演示了如何在EF Core中定义和使用事务:

// 开始事务
using (var context = new AppDbContext())
{
    using (var transaction = context.Database.BeginTransaction())
    {
        try
        {
            // 执行一些操作
            var product1 = new Product { Name = "Product 1", Price = 50 };
            context.Products.Add(product1);
            var product2 = new Product { Name = "Product 2", Price = 75 };
            context.Products.Add(product2);
            // 保存更改到数据库
            context.SaveChanges();
            // 提交事务
            transaction.Commit();
        }
        catch (Exception)
        {
            // 发生异常时回滚事务
            transaction.Rollback();
        }
    }
}

感谢您阅读本文中关于Entity Framework Core的示例代码和说明。希望这些示例能够帮助您更好地理解在C#中Entity Framework Core(EF Core)基本概念和操作数据的方法,包括插入实体、更新实体、删除实体以及事务处理。如果您有任何其他问题或需要进一步的指导,请随时告诉我。祝您编程愉快!

你可能感兴趣的:(C#,c#,开发语言,学习)