ef

ef core shadow properties

我的未来我决定 提交于 2019-11-30 16:11:40
什么是 shadow properties? 今天我们学习一下 ef core 里面的 shadow properties. 这个东西是什么? 让我用我拙劣的语言表述一下~ shadow properties 就是说咱们项目里面, 前台展示数据的时候, 有一些字段是需要展示出来给用户看的, 比如一个博客的 title, content等等, 这些都存在后台的数据库中的某个表, 对应于某些个字段, 但是有一些属性, 前台是不需要展示的, 后台却需要, 比如 last update time, 这些记录 audit record 字段, 属于一种隐式属性, 这个属性可以使用 ef core 的 shadow property 这一特性. 然后具体怎么用, 网上有很多例子: https://www.cnblogs.com/wow-xc/p/9149320.html https://www.cnblogs.com/CreateMyself/p/7291839.html https://www.cnblogs.com/fatkent/p/EFCore_ShadowProperties_1.html 官方link: https://docs.microsoft.com/en-us/ef/core/modeling/shadow-properties 来源: https://www

EF指定更新字段

倖福魔咒の 提交于 2019-11-30 09:17:05
使用EF做更新时,若没有进行跟踪会默认全字段更新,那怎么做到只更新我们想要更新的字段呢? 1 /// <summary> 2 /// 修改指定属性的单条数据 3 /// </summary> 4 /// <typeparam name="T">实体</typeparam> 5 /// <param name="context">上下文</param> 6 /// <param name="model">要修改的实体信息</param> 7 /// <param name="expression">指定修改的字段</param> 8 public static void Modify<T>(this DbContext context, T model, Expression<Func<T, object>> expression) 9 where T : class 10 { 11 context.Update(model); 12 //4.1将 对象 添加到 EF中 13 var entry = context.Entry<T>(model); 14 //4.2先设置 对象的包装 状态为 Unchanged 15 entry.State = EntityState.Unchanged; 16 //4.3循环 被修改的属性名 数组 17 foreach (var proInfo

Entity Framework 命令

拜拜、爱过 提交于 2019-11-30 06:27:46
生成数据库迁移文件 dotnet ef migrations add v1 列出数据库迁移文件 dotnet ef migrations list 移除最后一个数据库迁移文件 dotnet ef migrations remove 生成数据库迁移 sql 脚本 dotnet ef migrations script [arguments] [Options] arguments: <From>: The starting migration <To> : The ending migration Options: -o : The file to write the Result to 更新数据库迁移文件 dotnet ef database update 删除数据库 dotnet ef database drop 来源: https://www.cnblogs.com/leehomlee/p/11568380.html

go语言中字符串分割

天大地大妈咪最大 提交于 2019-11-30 05:47:41
go语言中字符串的分割分以下几种: 1、根据空格键进行分割   方法:strings.Fields(s string) []string     s:要分割的字符串     返回结果为[]string   例:   s:=" ab cd ef gh ij kl "       arr:=strings.Fields(s)       fmt.Printf("arr:%q\n",arr)   结果为:arr:["ab" "cd" "ef" "gh" "ij" "kl"]    注: 1、分割结果是不包含空字符串的,比如ab前面有一个空格,kl后面也有一个空格,但是分割的结果为 :["ab" "cd" "ef" "gh" "ij" "kl"],而并非: ["" "ab" "cd" "ef" "gh" "ij" "kl" ""]。分割长度为6,而并非是8     2、如果要分割的字符串有多个连续空格出现的话也会,并不会进行多次分割,例如上例中cd和ef之间出现了多个连续空格,结果为: ["ab" "cd" "ef" "gh" "ij" "kl"],而并非:["ab" "cd" "" "" "" "" "ef" "gh" "ij" "kl"] 2、根据某个字符串对另一个字符串进行分割   方法:strings.Split(s,sep string) []string     s

C#中 EF 性能优化

点点圈 提交于 2019-11-30 05:40:49
https://www.cnblogs.com/chenwolong/p/7531955.html   EF使用AsNoTracking(),无跟踪查询技术(查询出来的数据不可以修改,如果你做了修改,你会发现修改并不成功) 来源: https://www.cnblogs.com/personblog/p/11562941.html

ASP.NET开发实战——(九)ASP.NET MVC 与数据库之ORM

我们两清 提交于 2019-11-30 02:41:34
  之前的文章中介绍了如何在ASP.NET中通过ADO.NET操作SQL Server和My SQL数据库,数据库的操作是通过SQL语句的执行来完成的,在ASP.NET中还有一个简便的方式来使用数据库,那就是通过Entity Framework这个ORM组件。EF操作数据的原理也是最终生成SQL来执行。   本文将从以下几个方面来完成Entity Framework的介绍:   ●什么是ORM   ●Entity Framework   ●使用EF Code First操作数据库 什么是ORM   对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。(百度百科)。   Object-relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between incompatible type systems using object-oriented programming languages.(wikipedia)   以上两个解释的核心点都在于“面向对象”、

IOCAutofac与ORMEntityFramwork的联系--单例模式

我只是一个虾纸丫 提交于 2019-11-29 21:56:34
在你阅读之前默认你已经理解了IOC、DI、ORM以及autofac和EF的使用 在我最近写项目的时候我在单步调试时偶然发现的一个问题 先说明我的项目使用.NET MVC 三层架构,运用IOC Autofac工具和EntityFramework6 对于IOC Autofac不理解的可以去看我的博客: https://www.cnblogs.com/sandaman2019/p/11273366.html 对于EntityFramework6不理解的可以去看这个文章: https://www.cnblogs.com/wujingtao/category/816531.html 在使用IOC的时候进入单步调试项目时,IOC注册进容器时会获取实体类中的db上下文对象 可以看到我的_dbcontext是由一个dbcontext单例模式创建的! 那么为什么要用这个?在IOC执行时会扫描你对应的注册接口和实现类,实现类中的对于实体的操作,就需要dbcontext上下文对象 那么这个上下文对象怎么找,首先他会找到你的实体类,找到对应的实体模型类去检索上下文独享,确保有一个dbcontext对象可以去执行后续的操作 这就是对EF的请求操作,如果不通过工厂去实现就会造成同一次请求可能包含对数据库的不同操作,其他的EF对象内获取的数据可能已经是过时的, 如果不保证同一个请求中使用同一个EF上下文对象

42、C#:EF框架的:导航属性,加载记录追踪方式(MergeOption),添加内存内容到新上下文(Attach)

北城余情 提交于 2019-11-29 08:28:01
EF很强大,知道一些用法可以很便利地开发。 1.导航属性 --- 主/子表操作 比如apply为父表(主键作为子表的外键(之一)),progress作为子表,那么apply.progress.add(new progress{ ...,....})的方式就是使用apply对象来对子表进行新增操作。这种新增操作无需添加子表的外键(也就是apply的主键),会默认添加,且与子表的主键是否是此外键无关。 注:apply为表对应的变量,并不是表本身名称,progress也是如此。 2.MergeOption --- 设置从数据库加载记录对象后对这些记录对象的追踪方式 context.windopenapplies.MergeOption = MergeOption.NoTracking是将从数据库中捞取的记录对象加载到内存后,对这些记录对象不再追踪,相当于对这些记录对象关闭了数据库,这样可以提升性能,当然,这种做法仅限于查询。如果有增删改,就不能这样,会造成context.savechange()的时候无法更新到数据库中,增删改的时候不用写这句话,直接使用默认设置MergeOption.AppendOnly即可。 注:此枚举dll:System.Data.Entity.dll 3.Attach --- 将非当前上下文内存内容加载到当前上下文中 context.windopenapplies

C# EF框架基础(非MVC)使用笔记

一个人想着一个人 提交于 2019-11-29 08:26:30
什么是Entity Framework ? 微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。EF提供变更跟踪、唯一性约束、惰性加载、查询事物等。开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事。 简而言之:就是一个可以将数据库与数据实体关联的框架。 参考 微软官方文档: Microsoft Docs 文章内容 EF框架的基础使用(非 MVC 下使用) 如何与数据库建立连接 表与实体,列与属性的关联 CRUD操作 数据库连接 添加EF框架程序包 项目—>鼠标右键—>管理NuGet程序包—>浏览—>输入 EntityFramework 搜索—>选择第一个—>安装 连接配置 如果项目中没有Web.Config文件,此处可以跳过,可以直接使用string直接连接(请看下文)。 在项目的Web.Config添加数据库配置代码,如下所示: < configuration > ... < connectionStrings > < add name = " DeMonDBContext " connectionString = " Data Source=(localdb)\ProjectsV13;database=DeMon; integrated security=True;uid=;pwd=; "

C#EF DBFirst学习

拈花ヽ惹草 提交于 2019-11-29 08:25:09
EF框架有三种基本的方式:DB First,Model First,Code First。练习一下DB First, DatabaseFirst就是围绕数据库为中心的开发方式,使用这种模式我们必须要先设计和创建数据库,然后使用VS在已有数据库的基础上创建ADO.NET实体数据模型,之后就可以在编程的过程中使用EF访问和操作数据库里的数据了 1、先在数据库中创建几张表 2、在vs中创建一个类库项目,添加ado.net实体数据模型 ado.net实体数据模型 必须在安装EF包之后才会显示。 3. 安装EF框架 打开NUGet程序包后搜索EF ,点击下载安装即可,我们这里就安装最新版就好 3.添加新项“ADO.NET实体数据模型” 点击完成 后生成对应数据库里的EDM 在DBFirst模式下,是不需要对edmx文件做修改的,让系统自动生成就好了 如果现在要对表结构或者列名进行修改,那么先在数据库上修改好了,然后在edmx中将相应的实体删除,选择从数据库更新模型 ,再将删除的表添加回来 比如删除 或者修改字段名称EnterpriseID 同样的,添加表也是如此,这种情况下,即使原来数据库里面有数据也不会有什么影响的 3、在这个项目中做一个简单的增删改查,在class1类中添加如下代码 class Class1 { EFDBEntities mo = null; public Class1(