Contact对象,在存储过程中完成添加操作后,应该通过SELECT语句将对应的真实ID返回,这样的存储过程应该这样来写: 1: CREATE PROCEDURE [P_CONTACT_I]...从最终的执行结果,我们可以清晰地看到,从数据库中返回的真实ID反映在了被添加的Contact对象上了。...: 1: 10: Zhang San 2: 11: Li Si 3: 12: Wang Wu 在Entity Framework中使用存储过程(一):实现存储过程的自动映射 在Entity...在Entity Framework中使用存储过程(三):逻辑删除的实现与自增长列值返回 在Entity Framework中使用存储过程(四):如何为Delete存储过程参数赋上Current值?...在Entity Framework中使用存储过程(五):如何通过存储过程维护多对多关系?
可以是应用程序唯一使用的创建在内存中数据,也可以是与应用程序分离,存储在存储区域的数据(如文本文件、XML、关系数据库等)。 ...DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关 DataTable 对象中数据的关系信息组成。 ...Command对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。 DataReader 对象从数据源中提供快速的,只读的数据流。...DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。 4....Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association
前言 在之前的几篇内容中,我们了解了如何通过ADO.NET 访问数据库,如何修改、新增数据。...是一种通过描述对象与数据库之间映射关系的数据,将对象保存到数据库中的技术。 在C#中,曾经Entity Framework光芒万丈,遮盖了其他ORM框架的光辉(甚至如今都是如此)。...所以现有比较流行的大概有以下几种: Dapper 一个轻量的ORM框架 Entity Framework/Entity Framework Core 功能完备的框架 Nhibernate Java平台上著名的...Search: 先创建一个从DataTable转成对象的工具方法: private List Convert(DataTable table) { var list = new ListEntity Framework了。当然,DataSet、DataAdapter这两个类并没有讲完。这部分内容可能会在后续的番外篇内补全。
执行查询并填充DataSet,之后可以通过DataTable对象来操作数据。...ds = new DataSet(); adapter.Fill(ds); DataTable data = ds.Tables[0]; // 数据现在存储在data中,可以进行进一步处理...,它假定此存储过程接收一个名为@EmployeeId的输入参数,并返回一些数据。...在实际应用中,你需要根据实际存储过程的定义来调整参数的名称和类型。五、OleDb操作总结1....编程复杂性:使用OleDb进行数据库操作通常需要较为复杂的代码来管理连接、执行SQL命令等,不如某些现代ORM框架(如Entity Framework)提供的抽象级别高。
在C#开发中,与数据库的交互是常见的需求。通常,我们会使用ADO.NET直接执行SQL查询,虽然这种方法非常灵活,但容易导致代码重复,并且在处理多个SQL语句时容易出错。...SqlDataAdapter在数据库与DataSet之间桥接数据,支持填充和更新DataSet中的数据。...DataSet 用于存储内存中数据的离线副本,可以包含多个数据表和关系。...获取数据列表DBHelper类还可以通过GetDataSet方法来返回一个包含查询结果的数据集(DataTable)。这个方法在需要处理大量数据时非常有用。...相比于其他类似的数据库访问层封装工具,如Entity Framework和Dapper,DBHelper在灵活性和性能上具有一定优势,特别适合那些对性能有较高要求并且需要直接控制SQL的场景。
https://blog.csdn.net/huyuyang6688/article/details/41526763 Entity Framework是以ADO.NET为基础,...过去我们对数据库都是直接读取,业务数据中都是使用DataSet、DataTable等来传值,造成代码丑陋,严重脱离了OO的思想。 ...具体过程可以用下图表示: ? ...这就是映射的强大所在: 在VisualStudio中,映射通过 .edmx 文件来体现,.edmx文件的本质是一个 XML 文件,它用于定义概念模型、存储模型和这些模型之间的映射。 ...通过上面可以了解到,从读代码的角度来说,EF可以使我们在不需要了解数据结构的情况下就可以很好地理解;从实现的角度来说,EF可以使存储“模型化”,就如同将很多个对象存储在一个List中似的,向数据库表里存储的都是一个个实例
可以传入多条查询语句,返回的DataSet里会有多个DataTable /// /// 查询语句。...——取参数的返回值 /// /// 按序号返回参数值,一般在执行完存储过程后使用 /// //...,一般在执行完存储过程后使用 /// /// 参数名称。... #region 运行存储过程返回记录(DataSet、DataTable、不返回记录集) /// /// 运行存储过程返回DataSet.../// /// 存储过程名称 /// 返回DataTable
这是数据库开发中经常遇到的问题,当然,这可以用现成的ORM框架来解决,但有些时候,如果DataSet/DataTable是第三方接口返回的,ORM就不方便了,还得自己处理。...反射自然必不可少的,另外考虑到DataTable中的ColumnName通常与Model的PropertyName并不严格对应,可以用Attribute来记录这种映射关系。...string columnName) 14 { 15 ColumnName = columnName; 16 } 17 } 18 } 步骤2:在Model...; 48 } 49 50 /// 51 /// 将DataTable转换成Entity列表 52 /// ToList(DataTable dt) 56 { 57 List list = new List(dt.Rows.Count); 58
都有相同的方法,但具体执行可能不一样,即满足has-a关系。 除了用前面的重载外,C#还可以通过关键字virtual在基类中定义虚方法,用override关键字在派生类中重载虚方法实现多态。...而虚方法的重载要求在派生类中重载方法时,方法签名以及返回类型都必须与基类中的虚方法一致。...四、XML、文件读写与序列化 ---- 序列化的含义 序列化是将对象的状态存储到特定存储介质中的过程,主要目的是保存对象的状态以便以后需要的时候使用。与其相反的过程叫做反序列化。...常用属性: CommandText 获取或设置要对数据源执行的T-SQL语句、表名或存储过程名 CommandType 获取或设置一个值,该值指示如何解释CommandText属性。...Parameters 向存储过程传递参数,指定属性值。 常用方法: ExecuteNonQuery 对连接执行T-SQL语句并返回受影响的行数,多用于执行增删改命令。
本文讨论对核心断开模式 ADO.NET Framework 类 — DataSet 和关联的类(例如,DataSet、DataTable 和 DataView)的更改和增强。...本文实际上是有关 ADO.NET 2.0 中的 DataSet 和关联类的两篇文章中的第一篇。这里,我们将重点讨论 .NET Framework 中的类。...DataSet 的一项关键功能是它能够自动了解如何序列化自身,尤其是当我们希望在应用程序层之间传递它的时候。但是,通过仔细观察可以发现,这一序列化过程很罗嗦,它需要消耗大量内存和网络带宽。...在 ADO.NET 1.x 中,我们必须首先将 DataTable 添加到 DataSet 中,只有这样我们才能读取或写入 XML,这是因为完成该工作的方法只能在 DataSet 上使用!...流到缓存,缓存到流 对于 ADO.NET 2.0 中的 DataSet 和 DataTable 类的另一个主要增强是,提供了用来消耗 DataReader(将数据加载到 DataTable 中)以及在
Visual Studio Visualizer,项目地址 https://vsdatawatchers.codeplex.com/,这个项目包括以下内容的可视化插件: Data visualizer:DataSet...、DataTable、DataRow、DataView 、DataRowView、DataRowCollection Code visualizer:Entity Framework generated...Visual-Studio-Visualizer-Part-1 http://www.codeproject.com/Articles/584739/Visual-Studio-Visualizer-Part-2-Entity-Framework...2、JSON Viewer,项目地址:http://jsonviewer.codeplex.com/,这个项目主要就是Json数据的可视化浏览,在asp.net web api/mvc开发过程中是一个必备的可视化插件...这个插件使得你可以可视化 (集成在 VS 11) 你的TPL data flow network,包括每块的内容: ?
简单地说,DataSet是整个三层结构中数据传递的介质。 2.2 三层结构中DataSet的使用 2.2.1 在表示层中使用DataSet 在表示层中使用DataSet需要做两件事。...在Winform窗体控件中,DataGridView(数据表格)控件、ComboBox(下拉列表)控件等,他们都有一个数据源属性(DataSource),一般我们可以将Dataset或DataTable...当业务逻辑层收到请求或响应的DataSet后,根据用户的请求(例如:条件筛选数据)或业务规则会对DataSet中的数据进行处理。...ü SqlDataAdapter类,执行Sql命令,返回DataSet。 ü DataSet类,封装用户请求数据。...利用本章讲解的DataSet进行数据传递; 使用存储过程来操作数据。
在离线查询里最关键的三个接口或类: IDataAdapter 一种适配器,用来获取数据并填充或更新DataSet DataSet 表示数据在内存中的缓存 DataTable 表示内存中一个数据表 IDataAdapter...用来提供数据,DataSet表示adapter读取的结果集,其中有一个DataTable集合表示执行的SQL查询结果。...里 在C#内部,其实不允许推荐直接继承该接口,推荐继承DataAdapter类,该类规定了数据库Adapter在初始化的时候,必须提供一个可以访问的数据库连接和要执行的命令文本。...中的列的名称 public Type DataType { get; set; }//获取或设置存储在列中的数据的类型 DataRow: public object this[System.Data.DataColumn...获取或设置由索引指定的列中存储的数据 public object this[string columnName] { get; set; }//获取或设置由名称指定的列中存储的数据 public object
2.OleDbDataAdapter类 OleDbDataAdapter类可以在所有OLE DB数据源中读写数据,并且可以设置为包含要执行的SQL语句或者存储过程名。...一个命令(Command)可以用典型的SQL语句来表达,包括执行选择查询(Select Query)来返回记录集,执行行动查询(Action Query)来更新(增加、编辑或删除)数据库的记录,或者创建并修改数据库的表结构...当然命令(Command)也可以传递参数并返回值。Command可以被明确的界定,或者调用数据库中的存储过程。...在DataSet中可以包含任意数量的DataTable(数据表),且每个DataTable对应一个数据库的数据表(Table)或视图(View)。...这表示用户可以使用ADO.NET绑定到传统的数据存储区(如存储在Access或SQL Server表中的数据),也可以绑定到从文件读取的、包含在其他控件的或存储在阵列中的数据结果。
操作完毕,连接关闭 【SqlCommand】 从字面上来看就会理解SqlCommand就是一个命令,当与数据库建立连接之后,就可以用SqlCommand来对数据库进行增删改查、执行存储过程等...SQL语句、表名或存储过程。...◆ CommandType:需要执行的CommandText的类型,默认值是“Text”,表示执行的是SQL语句;值“StoredProcedure表示执行的是存储过程”。...DataAdapter就像一个搬运工一样,查询数据的时候,它在数据库中查询并将查询结果搬给DataSet,当用户对DataSet中的数据执行了增、删、改操作(即DataSet中的数据发生变化)的时候,DataAdapter...DataSet由一个或多个表组成,这些表就是DataTable,数据库表DataTable则由DataRow和DataColumn组成。
今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提到而已,没有专门介绍,才引起我写这篇文档。...= new List(); foreach (DataRow dr in @this.Rows) { var entity = new T()..., dr[field.Name].To(valueType)); } } list.Add(entity);...IsNullOrEmpty(this string @this) { return string.IsNullOrEmpty(@this); } } 判断字符串是否为空或Null...,"字符串".IsNullOrEmpty() 是不是更加能够理解,感觉就像读一句话一样, 像这样的DataTable转对象集合以及判断一个对象是否为空或者Null人性写法,在Z.ExtensionMethods
虽然网络已经有成熟的代码生成器,但是第三方代码生成器在实际应用场景中,生成的代码经常还需要在其基础上修改。修改其代码就不如修改代码生成器本身。...下面通过一个例子简要介绍代码生成器编写过程,并给出一个具备基本功能的范例雏形。以抛砖引玉。...sql语句,返回datatable /// /// //...App.Config中 在Model中考虑到可空类型(比如:int?)
前一篇的分享中,主要谈到Excel透视表连接PowerBIDeskTop的技术,在访问SSAS模型时,不止可以使用透视表的方式访问,更可以发数据模型发起DAX或MDX查询,返回一个结果表数据,较透视表的方式更为灵活...的数据连接,和SSAS分析服务进行连接,但此时使用编程的方式,向SSAS服务发起OleDbCommand,将DAX查询作为参数,传给OleDbCommand,最终模型将返回数据结果。...{ Entity.PbidFileInfo pbidFileInfo = Common.GetPbidFileInfo(row); string...ds = new System.Data.DataSet(); DataTable dt = new DataTable(); adp.Fill...中,再从DataSet取出首张表,即可拿到最终的结果。
Entity Framework 实体框架的形成之旅--实体框架的开发的几个经验总结 在前阵子,我对实体框架进行了一定的研究,然后把整个学习的过程开了一个系列,以逐步深入的方式解读实体框架的相关技术,期间每每碰到一些新的问题需要潜入研究...1、实体框架主键的类型约束问题 在我们搭建整个实体框架的过程中,我们一般都是抽象封装处理很多基础的增删改查、分页等常见的数据处理功能,如下所示。...id, DataTable dt) { List list = new List(); OUInfo...由于DateTime的默认值为"0001-01-01",所以entity framework在进行数据库操作的时候,在传入数据的时会自动将原本是datetime类型的数据字段转换为datetime2类型...不过由于实体框架里面,实体类避免耦合的原因,我们引入了DTO的概念,并使用了AutoMapper组件进行了Entity与DTO的相互映射,具体介绍可以参考《Entity Framework 实体框架的形成之旅
CA2352:可序列化类型中的不安全 DataSet 或 DataTable 容易受到远程代码执行攻击 带有 SerializableAttribute 标记的类或结构包含 DataSet 或 DataTable...CA2353:可序列化类型中的不安全 DataSet 或 DataTable 使用 XML 序列化特性或数据协定特性进行了标记的类或结构包含 DataSet 或 DataTable 字段或属性。...CA2355:反序列化对象图中的不安全 DataSet 或 DataTable 当强制转换的或指定的类型的对象图可能包含 DataSet 或 DataTable 类时,进行反序列化。...CA2362:自动生成的可序列化类型中不安全的数据集或数据表易受远程代码执行攻击 当反序列化具有 BinaryFormatter 的不受信任的输入且反序列化的对象图包含 DataSet 或 DataTable...具体来说,就是在反序列化过程中调用危险方法。 如果攻击者成功执行不安全的反序列化攻击,就能实施更多攻击,如 DoS 攻击、绕过身份验证和执行远程代码。
领取专属 10元无门槛券
手把手带您无忧上云