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)基本概念和操作数据的方法,包括插入实体、更新实体、删除实体以及事务处理。如果您有任何其他问题或需要进一步的指导,请随时告诉我。祝您编程愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day66:WEB攻防-Java安全SPEL表达式SSTI模版注入XXEJDBCMyBatis注入

目录 JavaSec搭建 Hello-Java-Sec搭建 Java安全-SQL注入-JDBC&MyBatis Java安全-XXE注入-Reader&Builder Java安全-SSTI模版-Thymeleaf&URL Java安全-SPEL表达式-SpringBoot框架 知识点&#xff1a; 1、Java安全-SQL注入-JDBC&MyBatis 2、Java安全-XXE注…

综合实验---Web---进阶版

实验配置&#xff1a; 7-1为内网Nginx服务器&#xff1b;7-2和7-3为Web服务器&#xff1b;7-4为网关服务器&#xff1b;7-5为外网客户机&#xff1b; yum安装Nginx&#xff1b;yum安装Mysql&#xff1b; 编译安装PHP&#xff1b;编译安装 由于我们Nginx和Mysql都是yum安装&…

java数据库关系型数据库设计(上)

目录 1.数据库设计的重要性及定义 1.数据库设计的重要性 1.失败的数据库设计造成的后果 2.优秀的数据库设计带来的好处 2.数据库设计的定义 2.数据库需求分析 1.需求分析的步骤 1.收集信息 2.标识实体 3.标识每个实体详细信息 4.标识实体之间的联系 1.数据库设…

架构实战:海量存储系统与分布式概念解析

在当今的互联网时代&#xff0c;海量数据的存储和处理成为了技术领域的热门话题。为了应对数据量的激增&#xff0c;传统的单体存储系统逐渐暴露出其局限性&#xff0c;而分布式系统因其高扩展性、高可用性和容错性等优势&#xff0c;成为了解决这一问题的关键技术。本文将通过…

同城预约上门服务APP小程序开发 打造快捷便利生活

随着移动互联网的快速发展&#xff0c;人们的生活方式正在发生深刻的变化。特别是在城市生活中&#xff0c;人们越来越依赖移动应用来解决日常生活中的各种问题。其中&#xff0c;同城预约上门服务APP正成为一种新型的生活服务平台&#xff0c;为人们提供了更加便利和快捷的服务…

腾讯云图形验证码的PHP示例

需要准备的 1.API密钥 SecretId 及 SecretKey 两部分&#xff0c; SecretId 用于标识 API 调用者的身份&#xff0c; SecretKey 用于加密签名字符串和服务器端验证签名字符串的密钥。 前往API密钥管理页面&#xff0c;即可进行获取 https://console.cloud.tencent.com/cam/ca…

idea将非UTF-8的properties修改为UTF-8编码的文件

需求背景 由于项目初始化时&#xff0c;properties文件的编码格式为ASCII编码格式&#xff0c;此时用idea打开该文件会默认展示UTF-8的编码内容&#xff0c;其中汉字可以正常展示&#xff0c;但是使用notepad打开却依旧时ASCII编码格式 idea配置 打开idea-setting-editor-f…

【MySQL】5. 数据类型

数据类型 1. 数据类型分类 2. 数值类型 2.1 tinyint类型 数值越界测试&#xff1a; mysql> use tt; Database changed mysql> create table t1(-> num tinyint-> ); Query OK, 0 rows affected (0.01 sec)mysql> insert into t1 values(-128); Query OK, 1 r…

代码随想录算法训练营第四十八天 | 121. 买卖股票的最佳时机

好忙这几天&#xff0c;偷个懒小做一点&#xff0c;后面有空补回来 题目链接&#xff1a;121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int maxProfit(vector<int>& prices) {int minrINT_MAX;int result0;for(int …

前端React篇之对 Redux 的理解,主要解决什么问题?Redux 原理及工作流程

目录 对 Redux 的理解&#xff0c;主要解决什么问题&#xff1f;Redux 原理及工作流程 对 Redux 的理解&#xff0c;主要解决什么问题&#xff1f; Redux是一个用于管理数据状态和UI状态的JavaScript应用工具&#xff0c;主要解决了在复杂JavaScript单页应用&#xff08;SPA&a…

飞桨科学计算套件PaddleScience

PaddleScience 是一个基于深度学习框架 PaddlePaddle 开发的科学计算套件&#xff0c;利用深度神经网络的学习能力和 PaddlePaddle 框架的自动(高阶)微分机制&#xff0c;解决物理、化学、气象等领域的问题。支持物理机理驱动、数据驱动、数理融合三种求解方式&#xff0c;并提…

c#学习记录

1.使用可以使转义字符无效 class study {static void Main() {string a "123\t123";Console.ReadLine();Console.WriteLine(a); }} 例如&#xff1a;string a "123\t123";&#xff0c;输出123\t123 2.字符的不可变性 例如&#xff1a; class study …

Day40:安全开发-JavaEE应用SpringBoot框架JWT身份鉴权打包部署JARWAR

目录 SpringBoot-身份鉴权-JWT技术 SpringBoot-打包部署-JAR&WAR 思维导图 Java知识点 功能&#xff1a;数据库操作&#xff0c;文件操作&#xff0c;序列化数据&#xff0c;身份验证&#xff0c;框架开发&#xff0c;第三方组件使用等. 框架库&#xff1a;MyBatis&…

SQLiteC/C++接口详细介绍之sqlite3类(十三)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十二&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十四&#xff09;&#xff08;未发表&#xff09; 40.sqlite3…

深入探讨医保购药APP的技术架构与设计思路

随着移动互联网的发展&#xff0c;医疗保健行业也迎来了数字化转型的浪潮。医保购药APP作为医保体系数字化的一部分&#xff0c;其技术架构和设计思路至关重要。接下来&#xff0c;小编将为您讲解医保购药APP的技术架构与设计思路&#xff0c;为相关从业者提供参考和启发。 一、…

【知识简略】 简单理解SpringCloud微服务架构:服务注册发现、配置中心、限流、熔断、降级、网关路由等

主要介绍Nacos那一套。 目录 微服务架构1.服务注册发现2.配置中心3.限流、熔断、降级4.网关路由 微服务架构 Spring Cloud 微服务架构中&#xff0c;Nacos 提供了一系列核心组件和服务治理功能&#xff0c;以下是对 Nacos 中涉及的相关组件及其功能的详细解释&#xff1a; 1.…

51单片机基础篇系列-定时/计数器的控制工作方式

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制&#xff0c;TMOD用于设置其工作方式&#xff1a; 1.工作方式寄存器TMOD 工作方式寄存器TMO…

Rust学习02:推荐一本入门书,免费的

都说Rust的学习曲线很陡峭&#xff0c;试过才知雀实不容易。 先说我的基础&#xff0c;非科班&#xff0c;自学Python&#xff0c;写过几个小程序。 我买书从来不扣扣嗖嗖的&#xff0c;所以先啃了几本Rust的入门书&#xff0c;包括&#xff1a; Tim McNamara的《Rust实战》&am…

inux(CentOS)/Windows-C++ 云备份项目(项目文件操作工具类设计,完成项目基本文件操作-读写-压缩-目录操作)

文章目录 1. 项目文件操作工具类设计 1. 项目文件操作工具类设计 根据前面的分析&#xff0c;这个文件类的基本属性如下&#xff1a; 文件大小信息文件最后修改时间文件最后一次访问时间&#xff0c;方便文件的热点管理文件名称&#xff0c;需要从http 请求行上的uri中获取基…

P8780 [蓝桥杯 2022 省 B] 刷题统计 Python

[蓝桥杯 2022 省 B] 刷题统计 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a a a 道题目&#xff0c;周六和周日每天做 b b b 道题目。请你帮小明计算&#xff0c;按照计划他将在第几天实现做题数大于等于 n n n 题? 输入格式 输入一…