EntityFramework入门:配置DbContext以及增、删、改、查、事务操作
![]() 一、EntityFramework简介 Entity Framework 的全称为 ADO.NET Entity Framework,简称 EF。 1.1 EF与 ADO.NET 的关系 Entity Framework(实体框架)是微软以 ADO.NET 为基础所发展出来的对象关系对应(O/R Mapping)解决方案,早期被称为 ObjectSpace,目前 CodeOnly 功能得到更好的支持,是微软的一个 ORM 框架,其他基于 .NET 开发的 ORM 框架有 Nibernate、PetaPoco 等。 1.2 Entity Framework 的特点: 支持多种数据库(MSSQL、Oracle、Mysql 和 DB2)。 强劲的映射引擎,能很好的支持储存过程。 提供 Visual Studio 集成工具、可视化操作。 能够与 ASP.NET、WPF、WCF、WCF Data Services 进行很好的集成。 1.3 ORM/什么是O/R Mapping 广义上,ORM 指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。狭义上,ORM 可以被认为是基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口,基于这样一个面向对象的接口,持久化一个OO对象应该不需要了解任何关系型数据库存储数据的实现细节。 1.4 DbContext类 DbContext 实例表示与数据库的会话,可用于查询和保存实体的实例。 DbContext是主要的类负责数据和对象互相转化。 二、EntityFramework实例演练 2.1 配置数据库连接 app.config文件添加数据库连接: XML Code: <connectionStrings> <add name="Normal" connectionString="Server=192.168.0.1;Database=CSFrameworkV5_Normal;User ID=sa;Password=test; Max Pool Size=512; Pooling=true;Connect Timeout=30" providerName="System.Data.SqlClient"/> </connectionStrings> //来源:C/S框架网 | www.csframework.com | QQ:23404761 2.2 继承DbContext类,扩展CustomerData C# Code: /// <summary> /// 客户资料,继承 DbContext /// </summary> public class CustomerData : DbContext { /// <summary> /// 构造器 /// </summary> /// <param name="connString">连接字符串</param> public CustomerData(string connString) : base(connString) { // } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } /// <summary> /// 客户资料 /// </summary> public DbSet<tb_Customer> CustomerList { get; set; } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 2.3 增、删、改操作 C# Code: var customer = new tb_Customer { CustomerCode = "csframework.1", NativeName = "C/S框架网", EnglishName = "www.csframework.com", Address1 = "广东省珠海市", }; using (var context = CreateDbContext()) { //新增 var obj = context.CustomerList.Add(customer); int i = context.SaveChanges(); MessageBox.Show("add:" + i.ToString()); //修改 obj = context.CustomerList.Where(w => w.CustomerCode == customer.CustomerCode).FirstOrDefault(); obj.NativeName = "修改的客户名称"; i = context.SaveChanges(); MessageBox.Show("edit:" + i.ToString()); //删除 context.CustomerList.Remove(obj); i = context.SaveChanges(); MessageBox.Show("del:" + i.ToString()); } //来源:C/S框架网 | www.csframework.com | QQ:23404761 2.4 事务操作 C# Code: //事务 using (var context = CreateDbContext()) { using (var tran = context.Database.BeginTransaction()) { try { context.CustomerList.Add(new tb_Customer { CustomerCode = "csframework.001" }); context.CustomerList.Add(new tb_Customer { CustomerCode = "csframework.002" }); context.SaveChanges(); //模拟处理其他表数据 var obj = context.CustomerList.Where(w => w.CustomerCode == "csframework.001").FirstOrDefault(); if (obj != null) { context.CustomerList.Remove(obj); context.SaveChanges(); } tran.Commit(); MessageBox.Show("tran ok!"); } catch(Exception ex) { tran.Rollback(); MessageBox.Show("tran failed!"); } } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 2.5 获取列表 C# Code: //查询列表 using (var context = CreateDbContext()) { var list = context.CustomerList.Where(w => w.CustomerCode.Contains("csframework")).ToList(); dataGridView1.AutoGenerateColumns = true; dataGridView1.DataSource = list; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 2.6 实例化 DbContext C# Code: /// <summary> /// 创建客户管理上下文实例(DbContext) /// </summary> /// <returns></returns> private CustomerData CreateDbContext() { var context = new CustomerData(System.Configuration.ConfigurationManager.ConnectionStrings["Normal"].ConnectionString); return context; } //来源:C/S框架网 | www.csframework.com | QQ:23404761 2.7 tb_Customer 模型 C# Code: ///<summary> /// ORM模型, 数据表:tb_Customer,由ClassGenerator自动生成 /// </summary> [Table("tb_Customer")] public class tb_Customer { #region 所有字段属性 [Key, Column(Order = 1)] public System.Int32? ISID { get; set; } public System.String CustomerCode { get; set; } public System.String NativeName { get; set; } public System.String EnglishName { get; set; } public System.String AttributeCodes { get; set; } public System.String Address1 { get; set; } public System.String Address2 { get; set; } public System.String Address3 { get; set; } public System.String Country { get; set; } public System.String Region { get; set; } public System.String City { get; set; } public System.String CountryCode { get; set; } public System.String CityCode { get; set; } public System.String Tel { get; set; } public System.String Fax { get; set; } public System.String PostalCode { get; set; } public System.String ZipCode { get; set; } public System.String WebAddress { get; set; } public System.String Email { get; set; } public System.String Bank { get; set; } public System.String BankAccount { get; set; } public System.String BankAddress { get; set; } public System.String ContactPerson { get; set; } public System.String Remark { get; set; } public System.String InUse { get; set; } public System.Int32? PaymentTerm { get; set; } public System.DateTime? CreationDate { get; set; } public System.String CreatedBy { get; set; } public System.DateTime? LastUpdateDate { get; set; } public System.String LastUpdatedBy { get; set; } #endregion } //来源:C/S框架网 | www.csframework.com | QQ:23404761 三、演练源码下载 ![]() 扫一扫加作者微信 ![]() ![]()
参考文档:
CSFramework开发框架旗舰版V5-新手入门教程-新手指南-用户操作手册 CSFramework对象模型框架(DbDataUpdate),支持MsSQL,MySQL,Oracle三种数据库操作 生成的窗体Form源码集成到VS解决方案 - C/S框架三层架构代码生成器操作指南 生成的项目模块(Project)添加到VS解决方案 - C/S框架三层架构代码生成器操作指南 MySql 时间戳Timestamp字段类型的字段作为主键模拟用户并发操作 WCF开发框架之WSHttpBinding参数配置(C#代码配置+App.Config两种方案) WCF开发框架 - NetTcpBinding配置web.config与C#代码配置 WCF开发框架 - BasicHttpBinding绑定的web.config与C#代码配置(支持https协议) WCF快速开发框架 - IIS承载WCF net.tcp协议NetTcpBinding配置详解 WCF快速开发框架 - IIS承载WCF http协议BasicTcpBinding配置详解 WCF快速开发框架 - IIS承载WCF服务wsHttpBindings配置详解(HTTP协议) IIS承载的WCF服务,配置.svc文件页面的MIME类型及处理程序映射 DevExpress正版授权离线注册操作步骤 基于开发框架ClientDemo演示版源码新增业务功能模块操作详解 C# 调用Process.Start 请求的操作需要提升解决方案
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |