首页 > 其他分享 >EF框架的三种模式

EF框架的三种模式

时间:2023-03-24 16:00:31浏览次数:27  
标签:实体 框架 数据库 EF 生成 三种 模型 数据模型 First

Database First

Database First就是先建数据库或使用已有的数据库。然后在vs中添加ADO.Net实体数据模型,设置连接并且选择需要的数据库和表。它是以数据库设计为基础的,并根据数据库自动生成实体数据模型,从而驱动整个开发流程。除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext。这种模式的好处是使用简单,容易上手。比较适合于采用已经存在的数据库进行开发。既通过简单的方式实现了,又重用了数据库。

第一步:创建ADO.NET实体数据模型

 

 

第二步:选择从数据库模型生成并点击下一步

 

 

第三步:选择数据连接并点击下一步

 

 

第四步:选择框架版本并点击下一步

 

 

第五步:选择数据库对象和设置,可修改模型命名空间,点击完成,生成edmx文件

 

 


优点:Database First可以自动深处生成上下文DBcontext,使用简单,容易上手,适合于需要快速开发的项目。

缺点:这种方式明显性能较差。同样,强大的微软也提供了一种解决方案,就是从数据库更新实体,详情请点击这篇博客EF映射——从数据库更新实体。

Model First

Model First开发模式是指从建立实体数据模型入手,并依据模型生成数据库,从而驱动整个开发流程。该模式也就是业界流行的面向领域的编程模式,它的优点在于程序员可以用与设计建模相同的思维来进行代码编写,更符合面向对象的思想。ModelFirst与Database First是互逆的,但最终都是输出数据库和实体数据模型。但是当实体需要改变的时候,我们要重新在设计器中修改实体,然后重新生成SQL脚本,更新数据库,这个时候数据库中原有的数据就会被清空。为了达到数据备份的作用,我们还需要提前对数据库进行备份,这又增加了工作量。

Model First跟DataBase First差不多,在选择模型内容的时候选择“空模型”即可,在edmx文件中右键创建实体、关联,在属性中科院修改类型等。

优点:开发人员可以再模型设计完成之后,利用vs等工具快速生成数据库脚本。

缺点:设计模型时完全了解数据库的结构,在模型中手动添加表关系,并且生成的脚本有点不简洁。

Code First

Code First模式自认为是手动创建POCO模型,数据层DbContext及映射关系,不存在ADO.Net实体数据模型edmx,通过Database.SetInitializer生成数据库(有四种策略),非常灵活。但是当实体类很多的时候,每一个实体类都需要我们手动编写代码,这将会是一件非常庞大的工程。但是Code First的好处绝对是比坏处大的。

优点:性能比较好,且代码较少冗余。

缺点:全部都是代码编写,对程序员的要求较高。

标签:实体,框架,数据库,EF,生成,三种,模型,数据模型,First
From: https://www.cnblogs.com/cloudcmm/p/17252287.html

相关文章

  • Firefox v54.0 稳定版
    下载:X64:https://download-installer.cdn.mozilla.net/pub/firefox/releases/54.0/win64/zh-CN/Firefox%20Setup%2054.0.exeX86:https://download-installer.cdn.mozilla.ne......
  • Python 栈 django框架开源商城系统baykeShop
    起始2022年我用django开发了一个商城的第三方包,起名为:django-happy-shop。当时纯粹是利用业余时间来开发和维护这个包,想法也比较简单,Python语言做web可能用的人比较少,不一......
  • (转)golang beego后端开发框架(二):配置、路由和控制器
    原文:https://www.dianjilingqu.com/178381.html1.beego参数配置beego目前支持INI、XML、JSON、YAML格式的配置文件解析,但是默认采用了INI格式解析,用户可以通过简单的配......
  • java -jar 启动设置参数的三种方式
    java-jar参数前后位置说明springboot项目启动的时候可以直接使用java-jarxxx.jar这样。下面说说参数的一些讲究1.-DpropName=propValue的形式携带,要放在-jar参数前面(......
  • 显卡驱动+cuda+cudnn+深度学习框架
    安装概览安装显卡驱动、CUDA和cuDNN可能因操作系统和GPU型号而异,下面是一般的步骤:下载和安装适合你GPU型号的显卡驱动,可以从官方网站或者GPU制造商的网站下载......
  • 量化开发踩坑集录(2)CTP的OrderRef/OrderActionRef字段规则
    量化开发踩坑集录(2)CTP的OrderRef/OrderActionRef字段规则 原标题:量化开发踩坑集录(2)CTP的OrderRef/OrderActionRef字段规则 规则 OrderRef用来标识报单,Orde......
  • css绝对定位,没有设置left或top
    目标:做h5实现以下情形问题:不知为何成了这样:   分析:下列是代码: 已知id="div_2"的div的父类已经定位,故该div块的位置是相对于这个父类。修改之前的代码:进行......
  • flink -udf函数(AggregateFunction)报错
    编写自定义函数AggregateFunction时,报错如下: 最终发现是因为导包错误:之后上网查了,发现这两个算子的应用场景不同:......
  • 【深入浅出 Yarn 架构与实现】5-2 Yarn 三种调度器
    本篇文章将深入介绍Yarn三种调度器。Yarn本身作为资源管理和调度服务,其中的资源调度模块更是重中之重。下面将介绍Yarn中实现的调度器功能,以及内部执行逻辑。一、简......
  • go各框架的log日志
    1.kratosLog:typeLoggerinterface{Log(levelLevel,keyvals...interface{})error}typeloggerstruct{loggerLoggerprefix[]interface{......