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

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

对于习惯使用 EF Core 和 关系数据的开发者来说,这看起来似乎有些奇怪。获取 Issue 的所有数据是没有必要且低效的。为什么我们不直接执行一个SQL插入命令到数据库,而不查询任何数据呢?...然而,它是领域驱动设计的一个重要实践。 聚合和聚合根最佳实践 以下最佳实践确保实现上述原则。 只通过ID引用其他聚合 一个聚合应该只通过其他聚合的ID引用聚合,这意味着你不能添加导航属性到其他聚合。...用于 EF Core 和 关系型数据库 在 MongoDB 中,自然不适合有这样的导航属性/集合。...(){/*反序列化或ORM 需要*/} } } Issue类通过其构造函数参数,获得属性所需的值,以此创建一个正确有效的实体。...如果我们用 public 设置器声明所有的属性,就像上面的Issue类中的属性例子,我们就不能在实体的生命周期中强制保持其有效性和完整性。

3.1K30

.NET ORM核心功能之导航属性- EFCore和 SqlSugar

导航属性 导航属性是作为.NET ORM核心功能中的核心,在SqlSugar没有支持导航属性前,都说只是一个高级DbHelper, 经过3年的SqlSugar重构已经拥有了一套 非常成熟的导航属性体系...,本文不是重点讲SqlSugar而是重点讲导航属性的作用,让更多写Sql人还未使用ORM的人了解到ORM的作用。....Include(z1 => z1.Education) .Include(z1 => z1.WorkExperience).ToList() EF Core导航属性配置 EF多对多 public class...原码下载: https://github.com/DotNetNext/SqlSugar 总结: .NET中无论是EF CORE还是SQLSUGAR 使用了导航属性都不再需要费心写繁琐的SQL语句,只需简单地调用导航属性...让我们一起追随这份感动,选择使用导航属性,让编程的旅途更加愉悦,让代码的世界充满美好与便捷!

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

    Entity Framework Core 2.0 入门

    可以在Context里面override这个Onconfiguring方法: 有一个错误, 应该是Server=localhost; (这里无需调用父类的方法, 因为父类的方法什么也没做)....在老版本到ef里, migration历史表里面还保存着当时到迁移的快照, 创建迁移的时候还需要与数据库打交道. 这就是我上面提到的如果团队使用ef和源码管理的话, 就会遇到这个非常令人头疼的问题....插入关联数据有几种情况: 1.直接把要添加的Model的导航属性附上值就可以了, 这里的Department不需要写外键....这时, 因为该数据是被context追踪的, 所以只需在它的导航属性添加新记录, 然后保存即可. 3.离线数据添加导航属性. 这时候就必须使用外键了. 预加载关联数据 Eager Loading....使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段.

    3.2K80

    Entity Framework Core 2.0 入门

    可以在Context里面override这个Onconfiguring方法: 有一个错误, 应该是Server=localhost; (这里无需调用父类的方法, 因为父类的方法什么也没做)....在老版本到ef里, migration历史表里面还保存着当时到迁移的快照, 创建迁移的时候还需要与数据库打交道. 这就是我上面提到的如果团队使用ef和源码管理的话, 就会遇到这个非常令人头疼的问题....插入关联数据有几种情况: 1.直接把要添加的Model的导航属性附上值就可以了, 这里的Department不需要写外键....这时, 因为该数据是被context追踪的, 所以只需在它的导航属性添加新记录, 然后保存即可. 3.离线数据添加导航属性. 这时候就必须使用外键了. 预加载关联数据 Eager Loading....使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段.

    3.5K140

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

    对于主键,默认情况下EF会检索实体类有没有名为Id或者类名+Id的属性,如果有EF则认为这个属性是主键,否则会认为该类没有设置主键。EF检索到主键的类型是数字类型的话,会自动添加自增长的约束。...对于其他属性,EF会自动按照同名的形式映射到数据表中。 对于外键,如果在类里添加了引用类型,而这个引用类型也在EF的上下文中,EF会把这种属性称为导航属性。...EF一旦在类里检索到了导航属性,就会去寻找对应的外键。EF会认为 属性名+Id或者类名+Id 可能是外键属性,如果找到名称一致且类型与导航属性目标类的主键类型一致,则认为是外键。...同时如果在一方这边设置了集合类型的导航属性,那么EF会自动到目标类里寻找外键属性。 说完了一对一和一对多,那么多对多呢? 如果没有声明的话, EF会生成一个中间表。 2....[InverseProperty("Author")] 用在集合类型的属性上,表示该集合属性是与源类哪一个导航属性相关。

    2.8K21

    EF Core 导航属性配置

    所谓的一对多就是其中多方上有一个属性或者列指向了另一个实体,而那个“一”的那头则没有对应的属性指向多方。 多对多是指两个类的实例各有一个集合属性指向对方,换句话说就是A有0到多个B,B也有0到多个A。...意思就是无法定义一对一关系中的子/从属方 如何解决呢?之前在说的时候,EF会根据导航属性自动生成一个外键,但是这一条在一对一这里就有点不太起作用了。...所以我们必须手动在导航属性的一侧实体类里配置外键,并用 HasForeignKey指定。(如果不使用Fluent API,也是需要在一端实体类配置外键,另一端则不需要)。...,只需要设置导航属性的关联即可。...在EF 6中 中间表可以仅存在于关系中,但是在EF Core3 还没有这个的支持。也就是当前文章使用的版本。 5. 附加 在EF的外键约束中,导航属性是默认可空的。

    3.3K20

    EF Core的增删改查

    0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置。 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法。...EF Core 导航属性配置》中介绍的配置类)的话,需要在EF Core中应用配置,具体是: protected override void OnModelCreating(ModelBuilder modelBuilder...当然了,使用配置文件必然会导致项目的类增多,而且大量的重复类可能会出现。当然了,如果考虑到这个问题的话,可以试试写一个项目代码生成器哦,专门用来处理这些差不多的类。...不过如果有导航属性的话,在新增的时候,EF Core会自动检索导航属性的另一端是否需要新增到数据库中,如果需要新增的话,EF Core会自动标记为新增的。...而删除,如果在配置导航属性时,没有设置级联删除,删除当前元素,如果另一端的外键是可空类型的,并不会删除导航属性另一端的元素只会设置外键指向为NULL,如果另一端外键是不可空的,那么就会同时删除。

    3.2K20

    EF 约定介绍

    当前环境为EF Code First开发模式中 一、EF默认约定 1、常用约定 (1)、当没有显示指定实体主键的时候,EF会默认将长得最像Id的属性(且类型为GUID)设为主键 (2)、设计实体时,当一个实体包含一个集合属性...,EF自动生成中间表,不需要新增实体来表示. (5)、表名默认复数化 2、类型发现约定(Type Discovery) 使用EF开发,往往是以定义一些模型类开始,定义完这些模型类之后,需要让DbContext...,EF会默认将长得最像Id的属性(且类型为GUID)设为主键,如果类中的属性(Property)名称为 ID (不区分大小写)或 ClassNameID(类名 + ID),Code First 则推断这个属性为主键...) Convention EF中,两个实体间的关系是通过导航属性的方式来实现,每一个对象都能拥有一个它所参与的关系的导航属性,导航属性提供了一种方式在两端来操作这个关系来获取我们需要的数据,可以返回任何一方的引用对象...除了导航属性规定实体间的关系外,外键属性来式规定实体间方式的一种手段.Code First能够推断以下的命名属性为外键(优先级从上到下): (1)、导航属性名+关联实体的主键名 (2)、关联实体实体名+

    1.6K100

    Entity Framework 系统约定配置

    在EF中是以一种约定的方式进行表、列同实体类进行映射的,与此同时为了提高最大的灵活性EF中可以通过Fluent API和Data Annotations两种方式对映射进行灵活配置。...3.使用导航属性约束两个表之间的关系,在从表数据类中除了导航属性,推荐定义一个外键属性在从表数据类中(如果不指定将默认生成一个“类名>+类的主键名>”的外键列;此外在主表中推荐定义一个集合从表属性用户导航...,当然这个属性不定义也可以正常生成外键关系但是不利于使用),具体规则:“导航属性名>+的主键属性名>”或者“类名>+属性名>”又或者“的主键属性名>”,其属性名不区分大小写并且如果出现多种匹配按照先后顺序匹配...;如果不存在外键属性则外键关系注册为可选的,否则注册为必选项并且此时将设置级联删除关系;如果在从表类中有多个导航属性对应同一个数据类那么需要使用fluent API或者Data Annotations进行手动配置...Entity Framework 手动定义约定  EF的默认约定不是一成不变的,我们可以选择移除和修改它,例如EF默认生成数据表时将数据类名的复数形式作为表名,下面的代码就可以移除这个规则: using

    84020

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

    项目依赖 使用 Scaffold-DbContext 命令生成实体类 手动创建实体类 实体属性 表的映射 列的映射 主键的映射 导航属性 创建数据库上下文 从数据库中查询 准备工作 准备工作包含两部分...实体属性 每一个实体类都有一组属性,EF Core 会将实体属性映射到数据库表中的列。 表的映射 对数据库表进行映射,使用 Table() Attribute。...导航(Navigation)属性是数据库表之间的关系在实体类中的体现。...设置好实体类之间的导航属性后,可以通过导航属性轻松的查询到关联实体的数据。...在设置导航属性之前,首先需要理清楚医院和医生存在着怎样的数量关系,医生是医院的附属,一家医院下面会有多名医生,因此医院和医生之间是一对多的关系。为了方便理解,下面只保留主键、外键和导航属性。

    2.5K10

    EF性能之关联加载

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

    95020

    Python 常用模块学习

    2、模块的执行环境 模块是被导入的,但模块也可以导入和使用其他模块,这些模块可以用Python或其它编程语言写成 模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其它元素 3、导入模块...,这意味着,所有来自模块的属性仅在import语句执行后才能使用 模块就是名称空间 模块的名称空间可以通过属性__dict__或dir(M)获取...datetime模块用来操作时间 datetime.date:表示日期的类。常用的属性有year, month, day datetime.time:表示时间的类。...:输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" In [10]: os.linesep Out[10]: '\n' pardir:获取当前目录的父目录字符串名 In [11...更多os模块详细内容,请看这里 -->猛击这里 六、sys sys模块与os模块组成了Python系统相关工具集的核心部分。

    82420

    jQuery 尺寸、位置操作

    ② 该方法有2个属性 left、top 。offset().top  用于获取距离文档顶部的距离,offset().left 用于获取距离文档左侧的距离。...② 该方法有2个属性 left、top。position().top 用于获取距离定位父级顶部的距离,position().left 用于获取距离定 位父级左侧的距离。 ③ 该方法只能获取。...案例:带有动画的返回顶部 1.核心原理: 使用animate动画返回顶部 2.animate动画函数里面有个scrollTop 属性,可以设置位置 3.但是是元素做动画,因此 $(“body,html...案例: 品优购电梯导航(上) 1.当我们滚动到 今日推荐 模块,就让电梯导航显示出来2.点击电梯导航页面可以滚动到相应内容区域3.核心算法:因为电梯导航模块和内容区模块一一对应的4.当我们点击电梯导航某个小模块...页面滚动到某个内容区域,左侧电梯导航小li相应添加和删除current类名 if (flag) { $(".floor .w").each(function (i, ele) {

    1.1K20

    Entity Framework 约定

    例如我们上一小节中定义的类 Department,类中没有名称为id的属性,但是存在名称为类名称+id的属性***DepartmentId***,因此DepartmentId属性,将会被映射为自增长的主键...如果一个类中既没有id属性,也没有类名+id的属性,那么代码在运行时将会报错,因为EF没有找到符合要求的字段创建主键。...EF中定义关系要使用到导航属性,通过导航属性可以定义多个模型之间的关系。大部分情况下我们会将导航属性和外键属性结合在一起使用。...导航属性的命名规则如下:导航属性名称+主体主键名称 或者 主体类名+主键属性名称 或者 主体主键属性名。...简单的说就是:一个复杂类型作为已存在对象的属性,EF会将复杂类型的类映射到已存在的表中,已存在的表包将包含这些列,而不是将复杂类型映射成另外单独的一张表。

    1.3K10

    TDesign 更新周报(2022年11月第1周)

    #1689修复吸顶表头超出省略问题,issue#1639提高 dragSortOptions 优先级,以便父组件自定义全部参数,tdesign-react#1556修复表格可编辑单元格的验证错误不能被正常清除问题...: 修复下拉菜单可视无法完全受控的问题 @uyarn (#1729)Checkbox: 修复Checkbox的options 参数属性变化时未重新渲染的问题 @uyarn (#1730)详情见:https...属性值 @k1nz (#1933)Slider: 修复 vertical 示例展示异常 (issue #1904) @pengYYYYY (#1918)CheckBox: 修复 readonly 属性没效果...@asbstty (#1651)Pagination: 透传selectProps 和 selectProps.popupProps 到组件 Pagination,以便实现挂载节点等复杂场景需求, issue...提高 dragSortOptions 优先级,以便父组件自定义全部参数,issue#1556 @chaishi (#1638)修复可编辑表格,行编辑,数据校验问题,issue#1514 @chaishi

    1.7K20

    scrollIntoView()方法导致整个页面产生偏移

    如果不知道 scrollIntoView 如果使用,我有篇文章专门写了 scrollIntoView 的简单使用:scrollIntoView() 让元素进入可视区域 · Issue #167 但是现在有个问题就是...如下图所示,当我点击第9题的时候,左侧第9题移动到视口中,但是整个页面包括导航栏都往上移动了,且无法在移回来,整个页面是没有滚动条的。 ?...问题分析 这个时候唯一的可能就是scrollIntoView()函数引起的问题。 我之前怀疑是不是该函数给整个页面加了transform 属性导致整个页面往上偏移,通过查看css,发现没有。...(简单来说就是元素相对父元素上边的距离) 这段代码好理解,就是当前需要显示的元素距离父元素顶部的距离,也就是滚动条滚动的高度。...这段代码执行后,就可以让该元素到达父元素顶部的位置。 注意事项:offsetTop 不一定是相对于父元素的,如果有很多父元素的话,它是相对于第一个定位的父元素的。

    4.3K40

    React路由

    前端路由的功能:让用户从一个视图(页面)导航到另一个视图(页面) 前端路由是一套映射规则,在React中,是 URL路径 与 组件 的对应关系 使用React路由简单来说,就是配置 路径和组件(配对)...就必须使用到路由 react-router 官网:react-router 路由基本使用 基本步骤 安装 yarn add react-router-dom react-router-dom这个包提供了三个核心的组件...属性,将来会渲染成a标签的href属性 Link组件无法实现导航的高亮效果 NavLink组件,一个更特殊的Link组件,可以用用于指定当前导航高亮 to属性,用于指定地址,会渲染成a标签的href属性...activeClass: 用于指定高亮的类名,默认active exact: 精确匹配,表示必须精确匹配类名才生效 Route path 的说明 默认情况下,/能够匹配任意/开始的路径 如果.../ 通过/home可以匹配Home父组件 再通过/list匹配子组件 编程式导航 场景:点击登录按钮,登录成功后

    2K20

    将文本输入或网址转换为知识图谱的AI应用—instagraph

    目录 •特点[2]•安装[3]•使用[4]•贡献[5]•许可[6] 特点 •动态文本到图谱转换。•节点和边缘的颜色编码。•响应式设计——在任何设备上使用。•超级用户友好!...导航到项目目录 cd instagraph 3. 安装所需的 Python 包 pip install -r requirements.txt 4....运行 Flask 应用 python main.py 导航至 http://localhost:8080 查看您的应用正在运行。 以容器运行 1....导航到项目 Docker 目录 cd instagraph/docker 3.1 以开发模式运行 docker-compose -f docker-compose-dev.yml up # 在末尾添加...在创建问题之前,请参阅我们提供的 ISSUE_TEMPLATE[11]。 许可 MIT 许可。更多信息请见 LICENSE[12]。 祝您使用 InstaGraph 愉快!

    53010

    jQuery特效 | 导航底部横线跟随鼠标缓动

    导航跟随 - 实现 结构分析 在此功能当中,核心在于结构的搭建,导航底部的横线能够来回运动,那么该横线必然需要定位到当前导航当中,因此可以确定如下的结构代码 ?...样式处理 针对父级元素进行相对定位设置,针对子级元素(横线)设置绝对定位,并且设置left和bottom的值 针对每个导航元素进行样式设置,需要注意的是,针对“当前”导航,需要给出不同于其他元素的样式(...,属性与属性值以“键值对”的方式存在,如果需要进一步了解animate的相关知识,可以在文章底部点击相关链接,查看相应文章。...在用户交互过程中,有可能会出现前一个动画还没有结束,新的动画就开启了,为了防止这个问题,我们通常根据需求在动画类效果的前面添加“stop()”方法,用于清除掉当前动画。...offsetLeft 与 position()方法 offsetLeft是JavaScript原生方法,ele.offsetLeft中,ele表示具体元素,元素的offsetLeft属性,表示该元素左侧与父级元素的距离

    8.7K50

    神奇的选择器 :focus-within

    :focus-within 的冒泡性 这个属性有点类似 Javascript 的事件冒泡,从可获焦元素开始一直冒泡到根元素 html,都可以接收触发 :focus-within 事件,类似下面这个简单的例子这样...我们无须去给获焦的元素设置 :focus 伪类,而是可以给需要的父元素设置,这样当元素获焦时,我可以一并控制它的父元素的样式 核心思想用 CSS 代码表达出来大概是这样: 父节点获取元素获得焦点的特性,实现的TAB导航切换: ?...意思大概就是,当 input 类型标签使用了 placeholder 属性有了默认占位的文字,会触发此伪类样式。...,利用 focus-within 便捷的实现离屏导航,可以说将这个属性的功能发挥的淋漓尽致,这里我直接贴一个 codepen 上 Dannie Vinther 对这个效果的实现方案: ?

    1.1K20
    领券