首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EF 约定介绍

因此,我们需要自定义一个ZdyNameDbContext,并继承DbContext,并在自定义DbContext中暴露需要暴露的类型,这样在Code First开发模式中,就可以使用 context(数据库上下文...) Convention EF中,两个实体间的关系是通过导航属性的方式来实现,每一个对象都能拥有一个它所参与的关系的导航属性,导航属性提供了一种方式在两端来操作这个关系来获取我们需要的数据,可以返回任何一方的引用对象...(对象间的关系是1:0或1:1),或者对象的集合(对象间的关系是1:*或*:*),Code First 能够根据导航属性定义的方式来推断实体间的关系.并映射到数据库表中....除了导航属性规定实体间的关系外,外键属性来式规定实体间方式的一种手段.Code First能够推断以下的命名属性为外键(优先级从上到下): (1)、导航属性名+关联实体的主键名 (2)、关联实体实体名+.... (2)、当关联实体的外键属性被设置为不为空,Code First会设置级联删除,反之不会。

1.6K100

Entity Framework 约定

约定的形式有如下几种: 类型发现约定 主键约定 关系约定 复杂类型约定 自定义约定 零、类型发现约定 在Code First 中。...modelBuilder) { modelBuilder.Ignore(); } 一、主键约定 Code First 会根据模型中定义的***id***,推断属性为主键(如果类中没有...二、关系约定 在数据库中,我们可以通过多张表的关联查询出数据,这多张表之间的关联,就是他们的关系。同样,也可以在模型中定义这样的关系。...EF中定义关系要使用到导航属性,通过导航属性可以定义多个模型之间的关系。大部分情况下我们会将导航属性和外键属性结合在一起使用。...当EF检测出外键属性后,会根据外键属性是否为空来判断关系,如果外键可以为空,那么模型之间的关系将会配置成可选的,Code First 不会再关系上配置级联删除。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在 EF 5 中跟踪SQL和缓存数据

    在EF4和EF5中需要跟踪执行SQL和缓存数据,微软官方有一个名为EFProviderWrappers的扩展示例非常值得学习,EFProviderWrappers包含EFTracingProvider和...EFCachingProvider,前者用于跟踪EF中增删改查的SQL语句,后者用于将EF查询的结果自动进行缓存,缓存策略过期时间可由开发者自己指定,目前这两个扩展只支持EF4和EF5,因为EF6中微软已提供拦截器...EFCachingProvider相对来说比较复杂,它使用外部缓存实现,缓存所有通过DbCommand.ExecuteReader()执行的查询的结果,以便于在后期查询中获得更好的性能。...5、将ExtendedNorthwindEntities构造函数中的字符串名称修改为自己在配置文件中设置的名称。...下载地址:https://code.msdn.microsoft.com/EFProviderWrappers

    1.1K80

    张高兴的 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用

    项目依赖 使用 Scaffold-DbContext 命令生成实体类 手动创建实体类 实体属性 表的映射 列的映射 主键的映射 导航属性 创建数据库上下文 从数据库中查询 准备工作 准备工作包含两部分...而 Code First 中手动编写实体类这一步是不可避免的,在大型项目中数十上百的实体类,这些工作量是不容小觑的。因此本文不会介绍 Code First 的有关操作。...导航(Navigation)属性是数据库表之间的关系在实体类中的体现。...设置好实体类之间的导航属性后,可以通过导航属性轻松的查询到关联实体的数据。...提示 导航属性中的 virtual 关键字不是必须的,当使用懒加载(lazy loading)时才有意义。在任何时候都不建议使用懒加载,这会拖慢数据的查询速度。

    2.5K10

    商品添加到购物车动画getBoundingClientRect获取元素位置

    (); 上述api返回一个对象obj,该对象有left、top等属性,可以根据该属性获得element元素在页面的位置 ?...1.3 标题栏粘性定位 #el { position: sticky; top: 0; } 该元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。...increase(index1, index2, event) { // some code... // 小球动画 var top = event.clientY...endLeft = 20; // // 小球到达起点并去掉小球的display: none; var outer = $('#points .pointPre').first...1s,是因为css中规定的小球运动时间为1s,所以在小球1s运动完以后会令它恢复到原来的位置,你想想,小球一共就只有那么几个,如果不恢复的话下次用户点击了小球就不够啊… 总结 以上是饿了么购物车模块主页面的几个主要技术点

    1.7K20

    Entity Framework Core 2.0 新特性

    此特性允许使用Linq查询表达式直接定义在实体类型的元数据模型上。这样的过滤器会自动应用到任何LINQ查询所涉及的那些实体类型,包括间接引用的实体类型(对象引用,导航属性)。...模型级过滤器将使用正确的上下文实例中的值,即执行查询的那个。   使用  IgnoreQueryFilters() 方法在一次查询中禁用过滤器。...局限性: 过滤器只能在层次结构的根实体类型上定义 过滤器不允许使用导航属性进行过滤(可以根据反馈添加此功能。)...一旦注册了方法,您就可以在查询的任何地方使用它。  要注意的几件事: 按照惯例,在生成SQL时,该方法的名称用作函数的名称(在本例中是用户定义的函数),但可以在方法注册期间重写名称和schema。...目前只支持标量函数 EF Core迁移将不负责创建它,您必须在数据库中创建映射函数 九.code first 实体配置   在EF6可以通过 EntityTypeConfiguraiton 封装特定实体类型的配置代码

    1.9K50

    EntityFramework 元数据 设计分析

    由于之前已经尝试使用过 EF CodeFirst CTP4,所以这次在EF4.1发布的第三天,在 OEA 框架中已经支持使用它来实现数据访问层。...所以,不用看源码,我们也可以大胆地猜测,在 StructualType 中,Members 这个属性的内部实现其实就是在基类的集合中注册一个新的 Metadataproperty 项。...但是,这也带来了不利的方面,例如,在进行查询的时候,不能象一般的 API 一样进行强类型的导航。...所以,要对 EF 的元数据进行强类型查询,首先要了解整个元数据的结构,然后借助 Linq 中的 OfType 方法来进行查询。...例如,我在上面截图中,使用 OfType 的方式来查询给定类型中所有成员中的属性列表。这也导致了性能比较差。 为什么是这样的设计?

    84780

    EF基础知识小记一

    2、集成查询语言LINQ LINQ和EF都出自于微软,都能帮助我们解决失配的问题.使用EF等实体框架,我们能在设计器中(Model First)或者代码(Code First)对领域实体进行建模.还能建立实体类之间的关系...(Code First) 之后的版本:提供了重大的性能改进,并支持了枚举类型,表值函数,空间数据类型,存储过程的一系列改进,以及对asp.net MVC框架的深度支持 版本6.0:提供了查询和更新的异步支持...,在代码优先(Code First)中,存储过程支持更新,性能改进,以及一系列的新特性,本书将聚焦这些新特性 4、模型 实体框架是一个强烈关注建模的技术,实体框架创建的是实体数据模型(EDM)的模型,它允许你在编码时使用强类型的实体类...(Code First).概念层的语法是通过概念架构定义语言(CSDL)来定义的 映射层:映射层定义概念层和存储层之间的映射,该层定义类的属性如何映射到数据表中的列.映射规格语言(MSL)来定义 存储层...6、实体属性 一个实体类型拥有一个或者多个属性,像一个类,属性分为标量属性、导航属性 标量属性:像integer,string等简单类型就是标量属性,也可以是复杂类型 导航属性:是指跟其它实体有关联的属性

    1.7K90

    CSS Feature Query

    一.作用 与media query(媒体查询)类似,feature query(特性查询)也是一种条件样式,仅在支持特定样式规则的环境应用指定的一组样式: The @supports CSS at-rule...P.S.具体见4.2 处理解析错误的规则 CSS从设计之初就是容错的,当前环境下支持的样式规则会被正确应用,不支持的会被静默忽略掉: Browsers simply skip over code they...(一些规则集被忽略或应用): 声明要么为空要么由一个后面跟着冒号(:)和属性值的属性名组成,之间可以有空白字符 规则集(也叫“规则”),由后面跟着一个声明块的选择器组成 二.语法 语法层面,feature...-值对儿形式的条件,不支持其它形式的,比如: @supports (@charset "utf-8") { /* 样式规则 */ } 三.用法 实际场景中,一般模式(最佳实践)为: /* 降级样式-针对低端环境...:作为浏览器的基础能力,任意新特性发布后都立即可检测,不需要手动扩展 语法自然:以样式声明作为查询条件,而不需要查表获得特性名 细粒度:属性名-值对儿粒度,足够灵活 可靠:支持不支持是浏览器自己说的,绝对靠谱

    80630

    EF Code First 学习笔记:关系

    Code First对一对多关系也有着很好的支持。很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性、导航属性等检测到模型之间的关系,自动为我们生成外键。...First观察到Lodging类中有一个对Destination的引用属性,同时Destination中又有一个集合导航属性Lodgings,因此推测出Destination与Lodging的关系是一对多关系...看看Code First默认会生成怎样的数据库 ? 天哪,竟然生成了四个外键。因为有两套类型一样的导航属性与引用属性,Code First无法确定它们之间的对应关系,就单独为每个属性都创建了一个关系。...这肯定不是我们所期望的,为了让Code First知道它们之间的对应关系,在这里要用到逆导航属性来解决。...多对多关系 如果有两个类中,各自都是导航属性指向另一个类,Code First会认为这两个类之间是多对多关系,例如: public class Activity { public

    75810

    GEE(Google Earth Engine)——JavaScript 入门(1)

    例如,在左侧导航包含了重要的数据类型,例如链接到部分或网页Image, ImageCollection, Feature, FeatureCollection, Geometry, Reducer, Chart...在获取链接按钮生成在地址栏的脚本唯一的URL。底部面板中的地图包含脚本添加的图层。顶部是数据集和地点的搜索框。左侧面板包含代码示例、您保存的脚本、可搜索的 API 参考和私有数据的资产管理器。...图 code.earthengine.google.com 上的 Earth Engine 代码编辑器 在代码编辑器中打开和运行代码 以下步骤演示了如何打开 Earth Engine 并执行显示图像的自定义脚本...在此处打开地球引擎代码编辑器: code.earthengine.google.com。如果您还没有,则需要通过使用注册的 Google 帐户登录来启用访问。 导航到位于代码编辑器最左侧的脚本选项卡。...地球引擎数据结构 两个最根本的地理数据在地球引擎结构 Image和 Feature分别对应于光栅和矢量数据类型,。图像由波段和属性字典组成。特征由一个Geometry和一个属性字典组成。

    33710

    采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    第二章:监控EF,并对某次操作进行针对性监控 首先我们在Global.asax文件中添加代码如下: protected void Application_Start() { .....可以看出来,这次查询用了56.2MS,占用整个页面的加载时间71%的比例.,点击蓝色的56.2可以看到详细的SQL语句,如下: ? 这样,我们就可以随时监控到页面中EF所使用的SQL语句并进行分析....针对性监控(重要) 当然,这只是简单的操作,我们在分析的过程中肯定会碰到诡异,或者后台代码更复杂的情况(比如一个页面10个查询),这个时候页面上的监控就会很混乱,不方便读,我们就需要进行针对性的监控....第三章:监控的权限(给管理员分配监控的权限) 在实际的项目开发中,我们不可能对所有的用户全部开放监控的权限,所以我们要对他进行显示的控制....//配置历史信息监控的权限(在~/mini-profiler-resources/results-index中可以查看最近100次的请求分析) 这里我们简单的做一下权限控制, 我们在Global.asax

    1.2K60

    初级.NET程序员,你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式。 推荐MiniProfiler插件 工欲善其事,必先利其器。...因为使用code first,需要设置导航属性为virtual,才会加载延迟加载数据。 ?...避免在循环中访问导航属性多次执行sql语句。 避免了查询语句中太多的手动映射,影响代码的阅读。...得出奇怪的结论: 在导航属性里面使用count和使用any性能区别不大,反而FirstOrDefault() != null的方式性能最差。...在直接属性判断里面any和FirstOrDefault() != null性能区别不大,count性能要差的多。 所以,不管是直接属性还是导航属性我们都用any来判断是否存在是最稳当的。

    1.9K100

    Linux基础 Day2

    逆向查看head / tail -n :查看文件的前/后 n 行,默认 10 行less less 参数 文件名常用参数:-N:显示行号-S:单行显示zless:查看压缩文件用“/keyword”进行关键词查询...FASTQ文件中,一个序列通常由四行组成:第一行:以 @ 开头,之后为序列的标识符以及描述信息第二行:为序列信息,如 ATCG第三行:以 + 开头,之后可以再次加上序列的标识及描述信息(保留行)第四行:...9 attributes属性,一个包含众多属性的列表,格式为“标签=值”(tag=value),不同属性之间以分号相隔。gtf:基因注释文件 ,总共有 9 列。...9 attributes属性,必须要有以下两个值:gene_id value: 表示坐标在基因组上的基因座的唯一的ID。gene_id 与 value 值用空格分开,如果值为空,则表示没有对应的基因。...transcript_id与value值用空格分开,空表示没有转录本。

    9310

    Entity Framework 继承映射

    该表包含所有类中的所有属性,特定行表示的具体子类通过 discriminator 来标识区分。...TPH是Code First 默认人的继承策略,没有表示C#的多态特性,优点是不需要联合查询,是最简单的策略。缺点是除主键和标识列 discriminator 外,其他的列都是可为空。...父类中的某些属性对于子类来说并不是必需的,因此Code First 会将改属性创建为可空列。TPH策略因为有 discriminator 列的存在,维护性不强,因此违反了第三范式。...缺点在于性能极差,如果要进行查询就要多表连接查询。 二、 TPC TPC是不被推荐的策略,因为他会为每个子类创建一个表,并且将父类中的所有属性映射进每个子类表中。...下面总结一下以上三种策略的使用场景 策略 场景 TPC 不需要多表关联查询或者很少查询父类数据,并且没有与父类关联的类 TPH 需要多表关联查询,且子类的属性较少 TPT 需要多表关联查询,且子类的属性很多

    82310

    为您的应用配置 Play Feature Delivery

    今天为大家发布本系列文章中的第六篇: 为您的应用配置 Play Feature Delivery。...如果您想回顾过去发布的内容,请参考下面链接查看: 导航组件概览 导航到对话框 在应用中导航时使用 SafeArgs 使用深层链接导航 打造您的首个 app bundle 在 "MAD Skills" 系列文章中...对于旧版本的 Android,功能模块可以放到基础 apk 中。如果想开启这个功能,您需要在 module 标签中设置 fusing 的 include 属性值为 true。...通过使用 device-feature 属性,您可以确保功能模块只会被分发到有相关配置的设备上。 默认情况下,每个用户都可以从应用所发布的地区下载到其所有功能模块。...在 AndroidManifest 文件中,您需要设置分发选项为 on-demand。随后,您可以在应用的流程中使用 PlayCore API 来下载、安装和卸载模块。

    83520

    C# 数据操作系列 - 8. EF Core的增删改查

    0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置。 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法。...不过如果有导航属性的话,在新增的时候,EF Core会自动检索导航属性的另一端是否需要新增到数据库中,如果需要新增的话,EF Core会自动标记为新增的。...而删除,如果在配置导航属性时,没有设置级联删除,删除当前元素,如果另一端的外键是可空类型的,并不会删除导航属性另一端的元素只会设置外键指向为NULL,如果另一端外键是不可空的,那么就会同时删除。...3.花样查询 EF Core 支持Linq查询,所以在查询的时候可以使用Linq进行。...EF Core在调用 ToList的时候,会将已调用的方法和Linq转换成SQL语句,并正式向数据库发起查询。如果出现了在Linq中调用三方方法或者自己写的工具方法的话,可能会提示不受支持。

    3.2K20
    领券