摘要:
一、为什么要在EF中执行SQL语句 使用EF操作数据库,可以避免写SQL语句,完成使用Linq实现,但为什么还要在EF中执行SQL语句呢。如果要写SQL语句,完全可以使用ADO.NET来操作数据库。这样说虽然没错,可是有些时候使用EF操作数据库还是有一些不方便的地方,例如:如果要修改某一条记录,按照 阅读全文
摘要:
一、Entity Framework概要 Entity Framework是微软的Object Relational Mapper(对象关系映射),也就是我们平常说的ORM,它可以让应用程序开发者将关系型数据作为业务模型来使用,也消除了开发者为数据访问编写的绝大多数管道代码的需要(比如使用ADO.N 阅读全文
摘要:
一、主键和外键 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组是能唯一标识一条记录,该属性组就可以称为主键。例如: 学生版(学号、姓名、性别、班级) 其中每个学生的学号是唯一的,学号就是一个主键。 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键。 成绩表(学 阅读全文
摘要:
在上一篇文章中,我们讲解了使用EF实现简单的增删改成,在这篇文章中我们使用实体的EntityState状态来优化数据的增删改查。 一、修改数据 上篇文章中的修改数据的方法是EF官方推荐的方式,即先查询出来要修改的数据,然后在修改。但是这种操作会导致多次操作数据库: 从上面的截图中可以看出,查询数据的 阅读全文
摘要:
在上一篇文章中讲解了如何生成EF的DBFirst模式,接下来讲解如何使用DBFirst模式实现数据库数据的增删改查 一、新增数据 新增一个Student,代码如下: 1 static void Add() 2 { 3 using (StudentSystemEntities dbContext = 阅读全文
摘要:
理解并发 并发管理解决的是允许多个实体同时更新,实际上这意味着允许多个用户同时在相同的数据上执行多个数据库操作。并发是在一个数据库上管理多个操作的一种方式,同时遵守了数据库操作的ACID属性(原子性、一致性、隔离性和持久性)。 想象一下下面几种可能发生并发的场景: 1、用户甲和乙都尝试修改相同的实体 阅读全文
摘要:
一、什么是事务 处理以数据为中心的应用时,另一个重要的话题是事务管理。ADO.NET为事务管理提供了一个非常干净和有效的API。因为EF运行在ADO.NET之上,所以EF可以使用ADO.NET的事务管理功能。 当从数据库角度谈论事务时,它意味着一系列操作被当作一个不可分割的操作。所有的操作要么全部成 阅读全文
摘要:
在这篇文章中讲解如何使用EF的DbFirst模式实现数据的增删改查 一、新建控制台应用程序,然后右键->添加新建项,选择数据里面的实体数据模型: 然后点击添加 二、选择来自数据库的EF设计器,并点击下一步 三、在实体数据模型向导界面选择要使用的数据连接,或者点击新建连接按钮创建新的连接,这里选择已有 阅读全文
摘要:
在EF中使用存储过程和使用视图是很相似的,一般会使用Database对象上的两个方法:SqlQuery和ExecuteSqlCommand。为了从存储过程中读取很多数据行,我们只需要定义一个类,我们会将检索到的所有数据行物质化到该类实例的集合中。比如,从下面的存储过程读取数据: 1 CREATE P 阅读全文
摘要:
Entity Framework允许控制对象之间的关系,在使用EF的过程中,很多时候我们会进行查询的操作,当我们进行查询的时候,哪些数据会被加载到内存中呢?所有的数据都需要吗?在一些场合可能有意义,例如:当查询的实体仅仅拥有一个相关的子实体时可以加载所有的数据到内存中。但是,在多数情况下,你可能并不 阅读全文
摘要:
一、什么是视图 视图在RDBMS(关系型数据库管理系统)中扮演了一个重要的角色,它是将多个表的数据联结成一种看起来像是一张表的结构,但是没有提供持久化。因此,可以将视图看成是一个原生表数据顶层的一个抽象。例如,我们可以使用视图提供不同安全的级别,也可以简化必须编写的查询,尤其是我们可以在代码中的多个 阅读全文
摘要:
一、什么是LINQ TO EntitiesLINQ,全称是Language-INtegrated Query(集成语言查询),是.NET语言中查询数据的一种技术。LINQ to Entities是一种机制,它促进了使用LINQ对概念模型的查询。 因为LINQ是声明式语言,它让我们聚焦于我们需要什么数 阅读全文
摘要:
Entity Framework的Code First模式有三种实体继承模式 1、Table per Type (TPT)继承 2、Table per Class Hierarchy(TPH)继承 3、Table per Concrete Class (TPC)继承 一、TPT继承模式 当领域实体类 阅读全文
摘要:
使用Entity Framework的Code First模式在进行数据迁移的时候会遇到一些问题,熟记一些常用的命令很重要,下面整理出了数据迁移时常用的一些命令。 一、模型设计 EF默认使用id字段作为主键,如果没有,则需要指定主键。 二、数据迁移基本命令和常用参数 1、安装Entity Frame 阅读全文
摘要:
一、管理数据库连接 1、使用配置文件管理连接之约定 在数据库上下文类中,如果我们只继承了无参数的DbContext,并且在配置文件中创建了和数据库上下文类同名的连接字符串,那么EF会使用该连接字符串自动计算出数据库的位置和数据库名。比如,我们的数据库上下文定义如下: 1 using System; 阅读全文
摘要:
一、概念 表拆分:一个表拆分成多个实体,例如Photograph表,可以拆分为Photograph和PhotographFullImage两张表。 Photograph实体结构: 1 using System; 2 using System.Collections.Generic; 3 using 阅读全文
摘要:
错误信息: “System.Data.Entity.Core.EntityCommandExecutionException”类型的异常在 EntityFramework.SqlServer.dll 中发生,但未在用户代码中进行处理。 其他信息:执行命令定义时出错。有关详细信息,请参阅内部异常。 跟 阅读全文
摘要:
在上一篇文章中,简单的介绍了使用Fluent API如何管理一对一的实体关系,在这篇文章中,接着介绍Fluent API如何管理一对多的实体关系。 要在数据库中配置一对多关系,我们可以依赖EF约定,还可以使用数据注解或Fluent API来显式创建关系。接下来使用捐赠者Donator和支付方法Pay 阅读全文
摘要:
一、概念 实体拆分:一个实体拆分成多个表,如Product实体,可以拆分成Product和ProductWebInfo两个表,Product表用于存储商品的字符类信息,ProductWebInfo用于存储商品的图片信息,两张表通过SKU进行关联。 1、Product实体类结构: 1 using Sy 阅读全文
摘要:
我们现在已经知道如何使用Code First来定义简单的领域类,并且如何使用DbContext类来执行数据库操作。现在我们来看下数据库理论中的多样性关系,我们会使用Code First来实现下面的几种关系: 1、一对一关系: one to one 2、一对多关系: one to many 3、多对多 阅读全文