首页 > 其他分享 >dotnet/.NET EF(Entity Framework)详解

dotnet/.NET EF(Entity Framework)详解

时间:2024-06-03 15:24:57浏览次数:19  
标签:数据库 EF 应用程序 Entity Framework 模型 First

原文链接:https://upimg.baike.so.com/doc/6061191-6274247.html

                 https://blog.csdn.net/u013733643/article/details/123473628

DOTNET就是.NET, 严格说是:.NET Framework框架 。但为什么叫DOTNET(.NET)呢?在计算机行业DOT是Distributed Object Technology的简称,意为分布式对象技术。DOT恰好与"点"的英语单词相同,DOT的音标[dɔt]。.NET是一个微软开发的编程环境,里面可以使用C#,VB等多种编程语言。

 

一丶Entity Framework
(一)EF简介
(1)ORM:Object Relation Mapping ,通俗说:用操作对象的方式来操作数据库。
(2)插入数据库不再是执行Insert,而是类似于Person p = new Person();p.Age=3;p.Name=“英莱特”;db.Save§;这样的做法。
(3)ORM工具有很多Dapper、PetaPoco、NHibernate,最首推的还是微软官方的Entity Framework,简称EF。
(4)EF底层仍然是对ADO.Net的封装。EF支持SQLServer、MYSQL、Oracle、Sqlite等所有主流数据库。
(5)使用EF进行数据库开发的时候有两个东西建:建数据库(T_Persons),建模型类(Person)。根据这两种创建的先后顺序有EF的三种创建方法:

DataBase First(数据库优先):先创建数据库表,然后自动生成EDM文件,EDM文件生成模型类。简单展示一下DataBase First 的使用。
Model First(模型优先):先创建Edm文件,Edm文件自动生成模型类和数据库;
Code First(代码优先):程序员自己写模型类,然后自动生成数据库。没有Edm。
DataBase First 简单、方便,但是当项目大了之后会非常痛苦;
Code First 入门门槛高,但是适合于大项目。
Model First……

无论哪种First,一旦创建好了数据库、模型类之后,后面的用法都是一样的。业界都是推荐使用Code First,新版的EF中只支持Code First,因此我们这里只讲Code First。

(6)Code First的微软的推荐用法是程序员只写模型类,数据库由EF 帮我们生成,当修改模型类之后,EF 使用“DB Migration”自动帮我们更改数据库。但是这种做法太激进,不适合很多大项目的开发流程和优化,只适合于项目的初始开发阶段。Java的Hibernate 中也有类似的DDL2SQL 技术,但是也是用的较少。“DB Migration”也不利于理解EF,因此在初学阶段,我们将会禁用“DB Migration”,采用更实际的“手动建数据库和模型类”的方式。

(7)如果大家用过 NHibernate 等ORM 工具的话,会发现开发过程特别麻烦,需要在配置文件中指定模型类属性和数据库字段的对应关系,哪怕名字完全也一样也要手动配置。使用过Java 中Struts、Spring 等技术的同学也有过类似“配置文件地狱”的感觉。 像ASP.Net MVC 一样,EF 也是采用“约定大于配置”这样的框架设计原则,省去了很多配置,能用约定就不要自己配置。

在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品。用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储架构编程)来创建数据访问应用程序。目标是降低面向数据的应用程序所需的代码量并减轻维护工作。

(二)Entity Framework应用程序有以下优点:
(1)应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。
(2)应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。
(3)可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。
(4)开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。
(5)多个概念性模型可以映射到同一个存储架构。
(6)语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。

标签:数据库,EF,应用程序,Entity,Framework,模型,First
From: https://www.cnblogs.com/Dongmy/p/18228960

相关文章

  • CMakeFile.txt通过sysroot方式后生成makefile报错
    怪不得博客园干不过别家,体验真的不太好。通过openwrite发布文章,其他平台都能发布,就博客园限制了,理由是文字少的文章限制发布到该平台。哎,这种行为当真是扶不起的阿斗。以后也不要太把博客园当回事了,迟早要关门的报错信息如下:--TheCcompileridentificationisunknown--T......
  • null 和 undefined
    1995年JavaScript诞生时,最初像Java一样,只设置了null表示"无"。根据C语言的传统,null可以自动转为0。Number(null)//05+null//5上面代码中,null转为数字时,自动变成0。但是,JavaScript的设计者BrendanEich,觉得这样做还不够。首先,第一版的JavaScript里面,null就像在......
  • java中SimpleDateFormat解析日期格式的问题
    在日常写代码的过程中,我们经常要处理各种格式的日期,常见的日期格式有:“20240601”,“2024-06-01”,“2024-6-1”。如何正确地处理日期格式,尤其是对外接口中参数的日期格式,就很重要了,一个不小心就可能出现意想不到的问题。举一个我遇到的真实例子:我们提供的对外接口中有一个参数是......
  • Data日期和DateFormat类
    packageJavaapi.data;/***@authorxiaowang*@creat2024/6/217:25*@DescriptionJavaLotus*/publicclassEmp{privateStringname;privateintage;privateDatabirthday;}Data类:归属包java.util作用:表示日期时间(精确到ms)使用: ......
  • 【ARM-Linux篇】Makefile入门
    一、编译工具及构建工具介绍make的出现是为了解决手动编译和链接大型工程的问题,它可以避免重复的工作,提高效率,保证正确性。make工具就根据makefile中的命令进行编译和链接的。但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改,因此更高级......
  • React(五)UseEffect、UseRef
    (一)useEffectuseEffect–React中文文档 useEffecthook用于模拟以前的class组件的生命周期,但比原本的生命周期有着更强大的功能1.类组件的生命周期在类组件编程时,网络请求,订阅等操作都是在生命周期中完成importReact,{Component}from'react'exportdefaultc......
  • Educational Codeforces Round 166 (Rated for Div. 2)
    A.VerifyPassword题目描述Monocarpisworkingonhisnewsite,andthecurrentchallengeistomaketheuserspickstrongpasswords.Monocarpdecidedthatstrongpasswordsshouldsatisfythefollowingconditions:passwordshouldconsistonlyoflowerc......
  • matlab 2024a 在只有核显的机器上opengl报错的问题 X11GLXDrawableFactory
    com.jogamp.opengl.GLException:X11GLXDrawableFactory-CouldnotinitializesharedresourcesforX11GraphicsDevice[type.x11,connection:0,unitID0,handle0x0,ownerfalse,ResourceToolkitLock[obj0x37e10dfd,isOwnerfalse,<4dd74231,25b2e611>[c......
  • Keras深度学习框架实战(3):EfficientNet实现stanford dog分类
    1、通过EfficientNet进行微调以实现图像分类概述通过EfficientNet进行微调以实现图像分类,是一个使用EfficientNet作为预训练模型,并通过微调(fine-tuning)来适应特定图像分类任务的过程。一下是对相关重要术语的解释。EfficientNet:这是一个高效的卷积神经网络(CNN)架构,旨在通过......
  • Unlearn What You Want to Forget Efficient Unlearning for LLMs
    目录概符号说明UnlearningLayersFusingUnlearningLayers代码ChenJ.andYangD.Unlearnwhatyouwanttoforget:efficientunlearningforllms.2024.概本文提出一种Unlearninglayer去帮助LLMs'遗忘'一些数据.符号说明\(F(\cdot)\),largelanguagemodel......