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

EF Core的增删改查

当然了,如果有小伙伴有更好的方法也可以分享出来呀。 1.2 配置文件的加载或者实体对象的托管 如果我们不使用配置文件的话,就必须在EF Core的上下文类里添加一个类型是DbSet的属性。...不过如果有导航属性的话,在新增的时候,EF Core会自动检索导航属性的另一端是否需要新增到数据库中,如果需要新增的话,EF Core会自动标记为新增的。...如果需要修改,可以使用以下方法修改,在配置导航属性的时候: OnDelete(DeleteBehavior.Cascade); 对于可为NULL的外键来说,枚举DeleteBehavior的值起以下作用...不需要我们额外的调用修改方法(因为根本没有Update方法)。 EF Core在我们调用 SaveChanges 会把缓存的所有更改(增、删、改)都推送给数据库。...如果使用的Linq表达式,则没关系,EF Core在遇到这种情况的时候,会把数据库里所有数据都加载到上下文中,再执行后续的查询等操作。

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

    基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

    这意味着,与数据传输对象(DTO)不同,实体具有实现业务逻辑的方法。实际上,我们应该尽可能在实体中实现业务规则。 单个单元原则 聚合及其所有子集合,作为单个单元被检索和保存。...所以,只有当应用程序代码中的相关对象可用时,即获取到聚合及其所有子集合数据时,我们才能执行该业务规则。 另一方面,MongoDB开发者会发现这个规则非常自然。...然而,它是领域驱动设计的一个重要实践。 聚合和聚合根最佳实践 以下最佳实践确保实现上述原则。 只通过ID引用其他聚合 一个聚合应该只通过其他聚合的ID引用聚合,这意味着你不能添加导航属性到其他聚合。...用于 EF Core 和 关系型数据库 在 MongoDB 中,自然不适合有这样的导航属性/集合。...在现实生活中,一个角色可能被分配给数以千计(甚至数以百万计)的用户,每当你从数据库中查询一个角色时,加载数以千计的数据项是一个重大的性能问题。记住:聚合是由它们的子集合作为一个单一单元加载的。

    3.1K30

    浅学前端:Vue篇(三)

    将来我们vue的应用程序发布的时候,要打个包,打包的时候,他会将所有组件的JavaScript代码打包到一起,JavaScript包会变得越来越大,影响页面加载速度。...所以我们最好的一种解决方式就是不要把所有代码打包到一起,让它按需加载,比如我们用到LoginView.vue的代码时候,这时候才把这个组件的JavaScript代码加载出来,这样就可以大大减少你代码的体积...el-menu 标签上加上 router 属性,表示结合导航菜单与路由对象,此时,就可以利用菜单项的 index 属性来路由跳转(表示你要跳转到哪里去)6....后端代码自己实现:/api/menu/admin返回所有菜单,/api/menu/zhang:返回菜单2及其子项,/api/menu/wang:返回菜单3及其子项前端:1....Vue Router的版本是3.x版本,以后使用vue3的时候会使用vue4.x版本,但是v3.x的版本里,他的API里只有新增路由的方法,没有删除路由的方法,所以本例中用一些”外门邪道“来实现:在/src

    35100

    微信小程序实践:2.3 可滚动的容器组件之 scroll-view

    5,如果一个瀑布流页面中有许多图,上面的图比下面的图加载慢,当看到下面图的时候,上面的图突然加载出来,把下面的图挤跑了,这种情况有没有办法解决?是什么技术?...9,在一些列表中,有时候出于性能考虑,可能需要故意放置一个空白、不显示的子项。空白子项虽然无形中增加了软件包的size,但是也默默提高了性能。...在软件设计中,一般我们为一个对象定义一个类,这个类既有方法,又有属性。...我们将这个类实例化,既可以改变实例的属性,又可以调用实例的方法;并且在大多数情况下,我们改变属性时,并不会使实例发生什么行为,而只有明确调用它的方法时,它才会有所动作。...在一些展示列表中,开始的时候可能只有一二个子项,这个时候也想触发下拉更新,合适的做法是在列表里故意放一个无用的空项。看以无用,实则有用。

    15.3K30

    Material Design 实战 之第四弹 —— 卡片布局

    ,这里需要注意的是, 在onBindViewHoIder()方法中使用Glide来加载水果图片。...Glide的用法: 首先调用Glide.with()方法并传入一个Context、Activity或Fragment参数; 然后调用load()方法去加载图片...,这里需要注意的是,在onBindViewHoIder()方法中使用Glide来加载水果图片。...Glide的用法: 首先调用Glide.with()方法并传入一个Context、Activity或Fragment参数; 然后调用load()方法去加载图片,其参数可以是一个URL地址/本地路径/资源...,CoordinatorLayout就是一个加强版的FrameLayout, 而FrameLayout中的所有控件在不进行明确定位的情况下,默认都会摆放在布局的左上角,从而也就产生了遮挡的现象。

    2.1K10

    EF性能之关联加载

    但是,通过对EF的学习,可以避免不必要的性能损失。本篇只介绍关联实体的加载的相关知识,这在我之前的文章中都有介绍。...我们已经了解到EF的关联实体加载有三种方式:Lazy Loading,Eager Loading,Explicit Loading,其中Lazy Loading和Explicit Loading都是延迟加载...导航属性标记为Virtual。 关闭Lazy Loading,可以将LazyLoadingEnabled设为false,如果导航属性没有标记为virtual,Lazy Loading也是不起作用的。...(二)Eager Loading使用Include方法关联预先加载的实体。...Lazy Loading会生成大量的sql,Eager Loading生成的关联查询比较负责,Explicit Loading同Lazy Loading一样生成很多的sql,但是有一些其他优点,比如:导航属性可以不用标注为

    94920

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

    此处并没有否认 SQL Server 是一款优秀的数据库,并且 EF 的很多特性在 SQL Server 上表现更好,可以说 SQL Server 是 EF Core 的最佳实践。...导航(Navigation)属性是数据库表之间的关系在实体类中的体现。...设置好实体类之间的导航属性后,可以通过导航属性轻松的查询到关联实体的数据。...在设置导航属性之前,首先需要理清楚医院和医生存在着怎样的数量关系,医生是医院的附属,一家医院下面会有多名医生,因此医院和医生之间是一对多的关系。为了方便理解,下面只保留主键、外键和导航属性。...提示 导航属性中的 virtual 关键字不是必须的,当使用懒加载(lazy loading)时才有意义。在任何时候都不建议使用懒加载,这会拖慢数据的查询速度。

    2.5K10

    C# 数据操作系列 - 6 EF Core 配置映射关系

    对于其他属性,EF会自动按照同名的形式映射到数据表中。 对于外键,如果在类里添加了引用类型,而这个引用类型也在EF的上下文中,EF会把这种属性称为导航属性。...EF一旦在类里检索到了导航属性,就会去寻找对应的外键。EF会认为 属性名+Id或者类名+Id 可能是外键属性,如果找到名称一致且类型与导航属性目标类的主键类型一致,则认为是外键。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求的属性,EF会自己添加一个外键属性。 对于一对一,EF要求导航属性双方都应该具有外键配置。 一对多,EF要求多的一方设置外键。...)] 用来表示这个字段在第一次插入数据库时,值由数据库提供 [ForeignKey("ModelAId")] 表示该导航属性具体值由 名称为 ModelAId 的属性维护,如果没有该属性,EF则记录添加但不对外显示...2.2 Fluent 方式 当我们使用这种方式的时候,会面临一个问题:是新建一个配置类呢,还是在 EF上下文的OnModelCreating方法里统一配置呢?

    2.8K21

    速读原著-Gradle 在大型 Java 项目上的应用

    Gradle 提供了不同的方式使不同的项目能够共享配置。 allprojects:allprojects 是父 Project 的一个属性,该属性会返回该 Project 对象以及其所有子项目。...通常可以在这里配置 IDE 的插件,group 和version 等信息,比如: allprojects { apply plugin: 'idea' } 这样就会给所有的项目(包括当前项目以及其子项目...subprojects:subprojects 和 allprojects 一样,也是父 Project 的一个属性,该属性会返回所有子项目。...可以在根目录的build.gradle 文件中添加所有子项目都需要的方法,在子项目的 build.gradle 文件中调用在父项目build.gradle 脚本里定义的方法。...Task,会将父项目的根目录下的 config 文件夹的所有 properties 和xml 文件使用从loadGroovyConfig()方法中加载出来的配置替换,并将替换之后的文件放到build 文件夹下的

    2K10

    防御式CSS是什么?这几点属性重点防御!

    当用户上传一个不同大小的图像时,它将被拉伸。这可不是什么好事。看看图像是如何被拉伸的! 最简单的修复方法是使用CSS object-fit。....card__thumb { object-fit: cover; } 在项目层面上,我倾向于为所有图像添加 object-fit,以避免出现意外的结果。...在我看到的这个例子中,开发者给二级导航添加了 position: sticky,这样它就可以粘在底部了。 然而,如果浏览器的高度较小,bug 就来了。注意这两个导航是如何重叠的。...图片上的文字 当在图片上放置文本时,必须考虑到图像无法加载的情况。文本会是什么样子。下面是一个例子: 文本看起来是可读的,但当图像加载失败时,它的可读性变得很差。...这个背景只有在图片加载失败时才会显示出来。 12.小心CSS网格中的固定值 假设我们有一个包含aside和main的网格。

    4.4K30

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

    因为使用code first,需要设置导航属性为virtual,才会加载延迟加载数据。 ?...2.关于在循环中访问导航属性的异常处理(接着上面,加上virtual后会报以下异常) "已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。" ?...看起来这条语句并没有什么实际意义,然而这是AutoMapper生成的sql,同时我也表示不理解为什么和EF生成的不同) 这样做的好处? 避免在循环中访问导航属性多次执行sql语句。...得出奇怪的结论: 在导航属性里面使用count和使用any性能区别不大,反而FirstOrDefault() != null的方式性能最差。...在直接属性判断里面any和FirstOrDefault() != null性能区别不大,count性能要差的多。 所以,不管是直接属性还是导航属性我们都用any来判断是否存在是最稳当的。

    1.9K100

    ASP.NET MVC5高级编程——(3)MVC模式的模型

    解释:在每个Album类中都有Artist和ArtistID两个属性,所以对于一个专辑Album,可以通过点操作符来找到与之相关的艺术家(Album.Artist),称Artist属性为导航属性(navigation...其中Include是采用预加载策略,尽其所能的使用查询语句加载所有数据。而EF框架的另一种也是默认的策略是延迟加载策略,即只加载主要对象(专辑)的数据,而不填充Artist和Genre。...可以告知EF在应用程序每次启动时重新创建数据库或者仅当检测到模型变化时重建数据库。当调用EF的Database类中的静态方法SetInitializer时,可以选择这两种策略中的任意一个。...在视图中使用DropDownList辅助方法,Edit中的两行代码就是为了构建从数据库中所有可得到的流派和艺术家的列表,并将这些列表存储在ViewBag中以方便以后让DropDownList辅助方法检索...这时浏览器会自动收集用户在表单输入中的所有信息并将这些值(及其相关的name属性值)放在请求中一起发送。这里注意input和select元素的name属性,需要和Album模型中的属性匹配。

    4.8K40

    Entity Framework Core 2.0 入门

    /core/querying/raw-sql; 这个方法目前还有一些限制, 它只能返回实体的类型, 并且得返回domain model所有的属性, 而且属性的名字必须也得一一对应....这时, 因为该数据是被context追踪的, 所以只需在它的导航属性添加新记录, 然后保存即可. 3.离线数据添加导航属性. 这时候就必须使用外键了. 预加载关联数据 Eager Loading....预加载子表的子表: 可以使用ThenInclude方法, 这个可以老版本ef没有的....使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段....如果需要在方法外使用该结果, 那么可以使用dynamic, 或者建立一个对应的struct或者class. 使用关联导航属性过滤, 但是不加载它们. SQL: 这个比较简单. 看sql一切就明白了.

    3.2K80

    从ng1看ng2 关于NgModule的简易归纳

    ng2中的module简述 ng2将这种概念更推进了一步,虽然我们可以使用module的方法来改变我们编程的思维,但是代码本身并不具有module的含义,这么说可能有点难理解,举个例子,就上面的例子,...对于bar和baz模块,我们很难简单的从代码层面来区分它们分别的职能是什么。...main.ts文件来引导加载根模块,这个过程对于根模块是透明的,因为它并不知道它如何被加载,有可能是在浏览器加载,有可能是在移动端加载等等,有可能使用JIT做动态加载,有可能提前编译好做静态加载,这些都是未知的...通常情况下,一个应用只有一个root-module(这不是废话吗),但是在一些大型的应用中,可能会存在多个独立的子项目,那么就有可能存在多个root-module。...从职能来讲,在整个的应用生命周期,尤其初始化必不可少,因此它们很少成为懒加载模块。

    95520

    Entity Framework Core 2.0 入门

    /core/querying/raw-sql; 这个方法目前还有一些限制, 它只能返回实体的类型, 并且得返回domain model所有的属性, 而且属性的名字必须也得一一对应....这时, 因为该数据是被context追踪的, 所以只需在它的导航属性添加新记录, 然后保存即可. 3.离线数据添加导航属性. 这时候就必须使用外键了. 预加载关联数据 Eager Loading....预加载子表的子表: 可以使用ThenInclude方法, 这个可以老版本ef没有的....使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段....如果需要在方法外使用该结果, 那么可以使用dynamic, 或者建立一个对应的struct或者class. 使用关联导航属性过滤, 但是不加载它们. SQL: 这个比较简单.

    3.5K140

    Entity Framework Core 简介

    零、EF Core 开发方法 EF Core 只支持两种开发方式 Code First 和 Database First,在 EF Core 2.0 开始不支持数据库模型的可视化设计器以及数据库设计导航...在 Code First 方法中, EF Core API 使用基于 domain classes 中提供的约定和配置的迁移来创建数据库和表,这种方法在 DDD 中很有用。...不再支持可视化设计器和设计导航。...; TPC ; 多对多关系 ; Entity Splitting ; Spatial Data ; 延迟加载 ; 使用DbContext进行存储过程映射以进行CUD操作 ; 种子数据 ; 自动迁移 。...EF Core 具有如下新功能 简单的关系配置 批量INSERT,UPDATE和DELETE操作 用于测试的内存提供程序 支持IoC(控制反转) 独特的约束 阴影属性 Alternate keys 全局查询过滤器

    1.9K10
    领券