【EF框架】EF框架的开发方法

article/2025/11/8 1:32:29

前言

    EF框架具有有三种数据持久化的方式,分别为Code First,Model First,Database First.看一下它们都有什么联系?

叙述

EF框架的三种工作方式

  1.Database First是基于已存在的数据库,利用某些工具(如VS提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件。也就是从一个数据库开始,然后生成实体框架和相应代码。
  2.Model First 是先利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。
  3.Code First 这种方式需要先写一些代码,如实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象。但其实这种方法与Model First是非常类似的。我们自己写的代码,其实就是用代码表示实体模型,而Model First是用可视化的方式描述了实体模型。

(1)Code First

   Code-First主要用于领域驱动设计。使用Code-First方法,您可以专注于域设计,并根据您的域要求开始创建类,而不是先设计数据库,然后创建与您的数据库设计相匹配的类。Code-First API将根据您的实体类和配置实时创建数据库。
基本的工作流程将是:
   编写应用程序域类和上下文类→配置域类以获取其他映射需求→按F5运行应用程序→Code First API创建新数据库或使用域类映射现有数据库→将种子默认/测试数据插入数据库→最后启动应用程序

举个例子

    假设我们要为XYZ学校创建一个简单的应用程序。此学校申请的用户应该能够添加或更新学生,标准(成绩),教师和课程信息。

  首先,我们不必先设计数据库表,而是根据需要为学校域创建类。首先,我们将创建两个简单的学生和标准课程,每个学生都与一个标准相关联,如下所示。

public class Student
{public Student(){ }public int StudentID { get; set; }public string StudentName { get; set; }public DateTime? DateOfBirth { get; set; }public byte[]  Photo { get; set; }public decimal Height { get; set; }public float Weight { get; set; }public Standard Standard { get; set; }
}

标准(年级)班级应该能够容纳多个学生,如下所示。

public class Standard
{public Standard(){ }public int StandardId { get; set; }public string StandardName { get; set; }public ICollection<Student> Students { get; set; }}

    现在,我们已经完成了我们学校应用程序的初始域类。Code First的方法也需要上下文类,它应该从DbContext派生。
  创建一个如下所示的上下文类,该类从DBContext类派生,并为要成为模型的一部分的类型公开DbSet属性,例如Student和Standard类。DbSet是实体类(又名实体集)的集合,所以我们赋予了实体名称的复数形式,如学生和标准。

namespace EF_Code_First_Tutorials
{public class SchoolContext: DbContext {public SchoolContext(): base(){}public DbSet<Student> Students { get; set; }public DbSet<Standard> Standards { get; set; }}
}

   现在,我们已经完成了Code Model方法所需的类。现在我们将使用上下文类添加学生,如下所示。

class Program
{static void Main(string[] args){using (var ctx = new SchoolContext()){Student stud = new Student() { StudentName = "New Student" };ctx.Students.Add(stud);ctx.SaveChanges();                }}
}

如果运行该应用程序,则会惊奇地发现应用程序运行成功,并且一名学生成功插入到数据库中。
但是,数据库在哪里,表和它的列是什么?

   这是实体框架的Code-First API的美妙之处。它会根据你的上下文类的基础构造函数中传递的参数创建数据库。由于我们的上下文类的构造函数中没有传入任何参数,因此在本地SQLEXPRESS数据库中创建了“EF_Code_First_Tutorials.SchoolContext”数据库,如下所示。它还在此数据库中创建了两个表,学生和标准表基于上面定义的Student和Standard域类。

 

 如上图所示,它创建了Students和Standards表,每个表包含具有适当数据类型和长度的列。列名和数据类型与各个域类的属性相匹配。它还将StudentId和StandardId作为PK(主键)和Standard_StandardId列作为FK(外键)。
  这样,如果不先创建数据库,则可以开始编写一个应用程序,最终将从您的域类创建数据库。

(2)Model First

   在Model First方法中,你可以直接在EDMX的设计界面上创建实体,关系和继承层次结构,然后从你的模型生成数据库。

举个例子:

Entity Framework之Model First生成模式

(3)Database First

    我们从现有的数据库中创建了EDM,上下文和实体类。所以,当你从现有的数据库生成EDMX时,它是一个数据库优先的方法。

举个例子:

Entity Framework之Database First生成模式

如何选择

   我们已经了解了代码优先,模型优先和数据库优先的方法。所以,在我们的应用程序中使用哪种开发方法。下图说明了决策树

   如果您已经有一个现有的具有域类的应用程序,那么您可以使用代码优先的方法,因为您可以使用此方法从现有类创建数据库。如果您有现有数据库,则可以使用数据库优先方法从现有数据库创建EDM。如果您没有现有的数据库或域类,并且您更愿意在可视化设计器上设计数据库模型,那么请选择“模型优先”方法。

小结

   本文简单的分析了一些EF框架的三种工作方式,实现数据的快速访问。其中Database First是EF最早支持也是最容易上手的一种开发模式,可以复用数据库;Model First是最能体现面向对象思想的一种模式,而且也很容易;Code First 即是编写代码,这种模式适合于资深的程序员,而且只需要编写代码实体类自动生成方便快速,更易维护,但是对于手动创建,对于太多的实体的时候则不方便,工作较多。所以我们在选择使用EF的三种模式时,根据我们自己的实际需求,选择最适合自己的,对自己的工作效率最有益的。


http://chatgpt.dhexx.cn/article/8Hmxcsi1.shtml

相关文章

使用EF框架

1.创建一个控制台项目 2.创建一个EF框架 3.查询出一个表中得到所有元素 static void Main(string[] args){//创建一个EF对象var ef new DemoDatabaseEntities1();//遍历数据库Grade表中的所有元素【EF框架对象->Grade表对象->把表内所有元素转换成实体集合Li…

C#控制台EF框架增删改查

1.创建一个linq to sql 或者EF框架&#xff0c;引入自己数据库的表 2.创建一个上下文 3.添加 News是数据库中的一张表名。 创建一个对象&#xff0c;把需要添加的内容放到对象里面&#xff0c;往表中插入对象&#xff0c;提交到数据库中&#xff0c;刷新数据库 。 4. 修改 创…

EF框架你了解多少?

[EF框架的认识] EF教程视频大全 一、 EF简介 ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主&#xff0c;将数据逻辑层切分为三块&#xff0c;分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层&#xff0c;其上还有 Entity Client&#xff0c;…

EF-创建EF框架

文章目录 什么是EFEF的作用 EF 分类Model First&#xff08;模型优先&#xff09;Code First&#xff08;代码优先&#xff09; Database First&#xff08;数据优先&#xff09; 如何创建EF 安装创建 注意事项 什么是EF 实体框架&#xff08;Entity Framework&#xff09;是微…

EF框架是什么?

Entity Framework 实体框架EF是ADO.NET中的一组支持开发面向数据的软件应用程序的技术&#xff0c;是微软的一个ORM框架。 ORM是什么&#xff1f; ORM的全称是Object Relational Mapping&#xff0c;即对象关系映射。 ORM框架有很多&#xff0c;EF框架是ORM框架的其中一种&a…

EF框架学习三

实例操作&#xff1a; Database First&#xff08;数据库优先&#xff09; 1.1创建一个示例数据库。 1.2打开vs2017&#xff0c;新建项目&#xff0c;如图所示 1.3添加EF框架插件 1.4添加ADO实体数据模型 1.5选择模型类型&#xff0c;点击下一步&#xff0c;然后新建连接&…

C# EF框架使用实例

EF框架 1、新增ADO.NET实体数据模型&#xff0c;但这样会导致新增数据库连接配置 2、选择好后&#xff0c;点添加 3、下一步&#xff0c;点新建连接 在这里如果勾上将App.Config&#xff0c;会自动在配置文件&#xff08;App.config&#xff09;中新增数据库连接字符串 4、以…

EF 框架的简介、发展历史;ORM框架概念

一、EF 框架简介 EF 全称是 EntityFramework 。 Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。 ORM框架&#xff08;Object Relational Mapping&#xff09; 翻译过来就是对象关系映射。 如果不用ORM框架&#xff0c;我们一般…

【EF框架】聊一聊EF框架

前言 EF框架的全称EntityFramework &#xff0c;Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。 叙述 ORM ORM是一种将数据从域对象存储到关系数据库&#xff08;如MS SQL Server&#xff09;的工具&#xff0c;以自动化的方…

给EF框架自动生成实体类修改名字

给EF框架自动生成实体类名字一般以T_ 开头&#xff0c;不符合我们给实体类起的名字这个时候如何进行修改呢&#xff1f; 右击2 选择属性 将属性中的实体集名称和名称改成自己想要的样子就可以啦~ 然后点击重新生成解决方案&#xff0c;我们就能修改自动生成的.cs的实体类名…

EF框架搭建

这是在vs2019版本社区版的创建流程&#xff1b; 右键项目添加新建项->选择数据&#xff0c; 这里选择第一个ADO.NET实体数据模型&#xff0c;并重命名&#xff0c;我这里命名为数据库名 基本上用的都是第一个&#xff0c;通过数据库生成实体类。 因为当前项目没有连接过&am…

EF框架如何搭建

EF出现背景 1、以前程序设计师一定要为了连接与访问数据库而去学习 SQL 指令&#xff0c;因此在信息业中有很多人都在研究如何将程序设计模型和数据库集成在一起&#xff0c;对象关系对应 (Object-Relational Mapping) 的技术就是由此而生。 2、像Hibernate或NHibernate都是这…

EF框架-SQL语句 查询与修改

机房合作当中使用到了框架首先有很多的不同之处&#xff0c;大大方便的编程的时间。 首先在查询与修改这两个点出发。 查询 这是使用SQL语句进行的查询&#xff0c;查询到的是多条信息 public List<CancelCardModel> SelectCancelRecord(string iD){using (InternetBa…

EF框架简介

EF 全称是 EntityFramework 。 Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。   ORM框架&#xff08;Object Relational Mapping&#xff09; 翻译过来就是对象关系映射。 二、EF实体框架整体架构&#xff1a; 架构组件&…

NET EF框架

EF 框架是微软的.NET中ORM&#xff08;对象关系映射&#xff09;框架。 在没有EF框架之前&#xff0c;我们是直接与ADO.Net 进行交互来访问数据库&#xff0c;在SqlHelper 里面面通过设置connection ,command ,dataset,datareader等来与数据库交互&#xff0c;这样的话使得我们…

EF框架的优点是什么?

Entity Framework 应用程序有以下优点&#xff1a; 1、应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。 2、应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。 3、可以在不更改应用程序代码的情况下更改概念性模…

EF框架,认识一下!

What&#xff1f; EF的全称是Entity Framework&#xff0c;也叫实体框架。是微软以ADO.Net为基础开发出来的对象关系映射&#xff08;ORM&#xff09;解决方案&#xff0c;它解决了对象持久化问题&#xff0c;将程序员从编写麻烦的SQL语句当中解放出来。就是用操作对象的方式来…

EF框架学习分享一

一、什么是EF框架和ORM框架 &#xff1f; EF 全称是 EntityFramework 。Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。 ORM框架&#xff08;Object Relational Mapping&#xff09; 翻译过来就是对象关系映射。 二、EF实体框…

EF框架

EF框架&#xff0c;全称Entity Framework&#xff0c;即实体框架 一、EF简介&#xff1a; 它微软提供的一种ORM工具&#xff0c;支持面向数据的软件应用程序的技术。ORM让开发人员节省数据库访问的代码时间&#xff0c;将更多的时间放到业务逻辑层代码上。EF提供变更跟踪、唯…

微信小程序开发——上传图片

功能描述 1.拍摄或从手机相册中选择图片上传。 2.chooseImage(e) 中的index用于判断是新增图片还是替换图片。 3.delImage(e) 删除当前index索引下的数据。 wx.chooseMedia(Object object) 属性类型默认值必填说明countnumber9否最多可以选择的文件个数mediaTypeArray.<…