ef

EF的Model First

别等时光非礼了梦想. 提交于 2019-11-27 15:57:15
一,添加ADO.NET实体数据模型(即edmx) 1,添加edmx 新建一个类库项目,项目中添加新项,选择数据/ADO.NET实体数据模型,如下图。 点击添加,实体数据模型向导窗口,选择空EF设计器模型,然后点击完成,即创建edmx文件成功。 2,添加实体模型 接下来,往edmx设计器中添加实体模型。在设计器中右键新增/实体,或者从工具箱中拖一个实体过来。 二,添加T4模板(包括DbContext和Entity的) 1,添加T4模板 项目中添加新项,选择数据/EF 6.x DbContext生成器,如下图。 这时,项目中会增加两个文件,xxx.Context.tt和xx.tt,一个是DbContext上下文模板,另一个是实体的模板。 2,修改T4 新增加的T4模板并不能马上工作,必须做相关设置才可以,这一点非常重要。 首先,修改$edmxInputFile$为具体的edmx文件名,包括HwaDB.Context.tt和HwaDB.tt,如下图。 其次,要修改DbContext构造函数的内容,修改前默认如下图。 修改后的样子如下图。 要做两点改动,一是启用延迟加载改为false,二是修改HwaDB.Context.tt中HwaDBContainer的构造函数。 三,生成建表脚本 1,创建数据库连接 在edmx工作区右键菜单,根据模型生成数据库...,打开生成数据向导窗口,如下图。

Entity Framework简介

本秂侑毒 提交于 2019-11-27 12:11:12
前言 很久很久之前就想来好好的学习一下EF,一直也是各种理由导致一直也没有好好的开始,现在下定决心了,不管怎样一定要把这先走一遍,并且把自己学到的相关EF的知识进行记录,以备后用,也望广大博友们一起来学习,探讨。 Entity FrameWork概述 Entity Framework(EF)是一个开源的“对象/关系映射(ORM:Object Relational Mapping)”框架,使应用程序可以使用一种“纯”的对象模型来访问关系数据库中的数据。 EF是微软主推的数据存取技术,其他一些重要的微软技术领域,比如Asp.Net MVC、WCF等等,都使用EF构建数据存取层。 在实际开发中,现在通常使用EF来构建应用程序的数据存取层。 EF系统架构和基本原理 EF的优点 开源且有足够的资源投入,持续完善。 可以访问多种数据库(如Oracle、IBM DB、SQL AnyWhere、MySql、SQLite等),但与Sql Server配合的最好。 更好的将应用程序与数据库隔离开了。 足够灵活,支持三种开发模式。 来源: https://blog.csdn.net/Cool2Feel/article/details/99671514

EF(ORM)

♀尐吖头ヾ 提交于 2019-11-27 10:31:13
它是微软封装好一种ADO.NET数据实体模型,将数据库结构以ORM模式映射到应用程序中。 优点: 1.简洁的Linq to Sql语句大大提高了开发人员的效率,不要再写复杂的sql语句; 2.不再需要再管应用程序如何去连接数据库; 3.EF可以用作用于数据服务和OData Service的基础设施; 缺点: 1.由于linq语句编译之后就是sql,对于这种自动生成的sql语句无法控制; 2.EF的运行机制会消耗大量内存,大大降低了程序运行效率,从而导致降低了用户在客户端的体验效果; 3.一旦数据结构发生变化,需要更新EF数据model;有时还可能会出现找不到更新过的实体类这种情况; Lambda表达式 lambda:匿名函数,就是没有名字的函数,简言之,它时将一块代码赋值给一个变量,直接把lambda当成参数传给函数。这样就使得代码变得更加整洁。 下面的思维导图讲了,什么时候需要用到,还有使用lambda表达式的好处。 举个栗子: 下图是用了lambda表达式和没有用的对比代码: 是不是整洁、简短了很多? 当有一个很简单的方法时,我们就可以将这个方法删掉,写成匿名函数的形式去传参。 LINQ集成查询 全拼:Language Integrated Query——语言集成查询 LINQ的优点: LINQ查询与SQL查询的顺序: LINQ先查询from的优势: 如写到from后 p in

EF乐观锁与悲观锁

為{幸葍}努か 提交于 2019-11-27 10:19:00
悲观锁:相信并发是绝大部分的,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞等待直到它拿到锁,并且每一个线程都必须要达到目的的。 乐观锁:相信并发是极少数的,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号时间戳并发机制实现。 在Entity Framework的默认环境情况下,系统会使用合并方式处理并发 两种锁的使用场景 从上面对两种锁的介绍,我们知道两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下(多读场景),即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果是多写的情况,一般会经常产生冲突,这就会导致上层应用会不断的进行return,这样反倒是降低了性能,所以一般多写的场景下用悲观锁就比较合适。 EF中的高并发   这里只介绍EF6中database-first开发方案的高并发解决方案,code-first开发方案中的高并发会在以后的EF CodeFirst系列中介绍。    EF默认支持乐观并发 :我们从数据库加载了一条数据,这是有人修改了这条数据,而我们手中用的还是旧数据,这就出现了脏读,这个时候我们修改了这条数据然后执行SaveChange()会发生什么呢?EF在保存数据时会首先查看数据库中的数据有没有改变过

ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查

余生长醉 提交于 2019-11-27 04:42:53
原文: ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查 介绍 EntityFrameworkCore EF core 是一个轻量级的,可扩展的EF的跨平台版本。对于EF而言 EF core 包含许多提升和新特性,同时 EF core 是一个全新的代码库,并不如 EF6 那么成熟和稳定。 EF core 保持了和EF相似的开发体验,大多数顶级API都被保留了下来,所以,如果你用过EF6,那么上手EF core你会觉得非常轻松和熟悉,EF core 构建在一套全新的核心组件上,这意味着EF core没有从EF上继承所有特性。一些特性会在未来的版本中发布(例如 延迟加载和弹性链接),其它一些不常用的特性不会在EF core中实现。 全新的,可扩展的,轻量级的EF core,允许我们添加一些在EF6中未实现的特性(例如 alternate keys,和在Linq中混合计算混合的数据库) 安装并配置 使用NuGet包管理工具下载ef Core 发一下文字 Microsoft.EntityFrameworkCore.SqlServer 方便小伙伴复制, 安装这个的时候,会自动安装所需依赖,装完就可以尽情的使用EFCore了。 1.新建一个Model作为测试数据 2.新建Uitl文件夹存放EF相关的类, 新建Context 3

ioc+ef+core搭建ef封装(一)

两盒软妹~` 提交于 2019-11-27 02:33:52
添加应用Microsoft.EntityFrameworkCore;Microsoft.EntityFrameworkCore.Design;Microsoft.EntityFrameworkCore.SqlServer base类 public abstract partial class BaseEntity { /// <summary> /// id /// </summary> public Guid gid { get; set; } } 分装仓储结构接口 /// <summary> /// 仓储db接口 /// </summary> public partial interface IDbContext { #region 方法 /// <summary> /// 创建可用于查询和保存实体实例的DbSet /// </summary> /// <typeparam name="TEntity">Entity type</typeparam> /// <returns>A set for the given entity type</returns> DbSet<TEntity> Set<TEntity>() where TEntity : BaseEntity; /// <summary> /// 将在此上下文中所做的所有更改保存到数据库 /// </summary>

EF CORE每个命令的用途

别说谁变了你拦得住时间么 提交于 2019-11-26 12:48:18
1、dotnet ef migrations add InitialCreate --------------------------迁移搭建基架 文件一般生成在项目根文件下面 2、dotnet ef database update <name> ----------------------------------将新迁移应用到数据库(并创建数据表)默认是执行最后一个Migrations迁移文件,如果要指定执行后面跟上Migrations迁移文件名称 如果提示`__EFMigrationsHistory`表不存在需要执行第四个命令,有生成`__EFMigrationsHistory`表的SQL语句,拿出来生成数据表。 3、dotnet ef migrations add <name> ------------------------------------修改原型以后迁移基架 4、dotnet ef migrations script --------------------------------------生成数据库表SQL语句 5、get-help EntityFrameworkCore ---------------------------------查看命令 来源: https://www.cnblogs.com/zhaoyongjie-z/p/11204419.html

佳能现售135镜头发表年份

Deadly 提交于 2019-11-26 09:04:19
注:带有IS的镜头,后面标注的数字指的是IS防抖级数 1987 EF 15mm F2.8 fisheye EF 28m F2.8 EF 135mm F2.8 (soft) EF 50mm F2.5 macro 1988 EF 24mm F2.8 1990 EF 35mm F2 EF 50mm F1.8 II 1991 EF 100mm F2 USM TS-E 45mm F2.8 TS-E 90mm F2.8 1992 EF 20mm F2.8 USM EF 85mm F1.8 USM 1993 EF 50mm F1.4 USM EF 400mm F5.6 L USM 1995 EF 70-200mm F2.8 L USM EF 28mm F1.8 USM 1996 EF 135mm F2 L USM EF 200mm F2.8 L II USM EF 180mm F3.5 L macro USM 1997 EF 300mm F4 L IS USM 2 1998 EF 28-135mm F3.5-5.6 IS USM 2 EF 100-400mm F4.5-5.6 L IS USM 2 EF 35mm F1.4 L USM 1999 EF 70-200mm F4 L USM EF 300mm F2.8 L IS USM 2 EF 400mm F2.8 L IS USM 2 EF

Learning Entity Framework - EDM

孤人 提交于 2019-11-26 09:02:47
EDM就是Entity Data Model,是EF的主要操作对象。在我理解,EDM是对数据库表的持久化和实体映射。M$提供的两个ORM技术,Linq2SQL和EF,目前大家还是用自底向上(先建表后映射实体类)的设计方法。其实我也是比较倾向于这么做的,画ER图然后往下layout的操作,我不是很感冒。。。。 在Visual Studio里创建一个EDM是非常方便的,提供了一个专门的designer,这个方法在网上也很常见,基本上也没有什么特别需要设置的地方。在创建EDM完毕之后,还是有个比较重要的事情要做,那就是把Entity Set Name改为复数形式,以及把one - many这种关系的one端的navigation properties名字也改为复数,这在后面的coding中会带来相当大的便利。 在VS的解决方案管理器中,打开EDM的方法似乎只有设计器,如果想看一看它的raw编码,可以右键->Open with->XML Editor。据说看懂这个玩意能够带来升级的EF理念,who knows.... 这其中的SSDL、CSDL和C-S Mapping的内容都是极端重要的。 EDM中也会有数据库视图,这些视图都是只读的,即没有Insert、Update和Delete命令。 EF会自动为model生成一些实体类,这些实体类就是向model做查询用的。 OK

EF Core For MySql查询中使用DateTime.Now作为查询条件的一个小问题

风格不统一 提交于 2019-11-26 08:00:08
背景 最近一直忙于手上澳洲线上项目的整体迁移和升级的准备工作,导致博客和公众号停更。本周终于艰难的完成了任务,借此机会,总结一下项目中遇到的一些问题。 EF Core一直是我们团队中中小型项目常用的ORM框架,在使用SQL Server作为持久化仓储的场景一下,一直表现还中规中矩。但是在本次项目中,项目使用了MySql作为持久化仓储。为了与EF Core集成,团队使用了 Pomelo.EntityFrameworkCore.MySql 作为EF Core For MySql的扩展。在开发过程中,团队遇到了各种各样在SQL Server场景下没有遇到过的问题,其中最奇怪的,也是隐藏最深的问题,就是将 DateTime.Now 作为查询条件,产生了非预期的结果。 问题场景 本周在项目升级的过程中,客户反馈了一个问题。 在当前系统的Dashboard页面,有一个消息提醒功能,客户可以自定义一些消息,并且指定提醒的日期。客户遇到的问题是通常添加的消息提醒,在指定日期的上午时间段是不会显示,只有在下午时间段才能看到,比如说客户指定2019年10月26号看到一个的消息提醒,但是在10月26日这天早上8:00-12:00这个时间段,系统总是看不到提醒,只有到了下午的时间段才能看到提醒。 PS:这里客户表达的只是个笼统的问题,但问题确实是上午的大部分时间是看不到消息提醒的,但并不是精确到中午12