EFCore:关于DDD中值对象(Owns)无法更新数值 - 没有星星的夏季 - 博客园

//修改数据using (var db = new DemoMigrationsDbContextFactory().CreateDbContext(args)){var myTable = db.MyTable.Find(1);myTable.DecimalValue1 = 10m;myTable.DecimalValue2 = 20m;//myTable.MyOwns = new MyOwns(10m, 20m); //正确用法myTable.MyOwns.Update(10m, 20m);    //错误用法,值对象应该赋值,不应该修改其里面的值!db.SaveChanges();}

  总结

  DDD(领域驱动设计)是应对复杂软件设计的利器,而EFCore为DDD中的实体,值类型等持久化提供了非常方便的解决方案,但是在使用时,我们要切记:

  1、值对象要当做和int,String,DateTime等类型一样使用,哪怕是修改值对象中一个属性,也需要从新创建一个值对象!

  2、EFCore提供的OwnsOne或者OwnsMany方法关联的值对象中的属性默认是可空的,而对实体则是会根据属性类型是否可空而定,所以使用时要根据自己的需求而定。

  3、EFCore提供的OwnsOne或者OwnsMany方法关联的值对象中的属性尽可能不要设置默认值,这里笔者只是用decimal类型碰到了,但是不排除还有其它类型也会有这样的问题

  4、目前这几点在.net 5.0简单测试过了,结果也是一样,那么估计是有意这么做的,所以大家使用时多留意吧

EFCore:关于DDD中值对象(Owns)无法更新数值相关推荐

  1. JPA实现领域驱动设计(DDD) 中值对象的持久化

    文章目录 什么是DDD值对象? 实现方式 单一值对象 改变表中映射的字段的名称 根据值对象的单一属性查询或多属性的动态查询 多个值对象 根据值对象的单一属性查询或多属性的动态查询 什么是DDD值对象? ...

  2. DDD(五)——值对象

    1.引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象.唯一标识.值对象,值就是数字1.2.3,字符串"1","2","3&qu ...

  3. 数据、事实、实体、值对象、事务、不变性

    数据有两个重要属性:首先数据是基于时间的,数据是表达一段时间内一个逻辑为真的事实.另外一个属性是数据本质上是不可变的,因为和时间有关,我们是不能回到过去改变数据的真实性.这两个属性就意味着:对数据你其 ...

  4. 如何运用DDD(一):值对象

    作为领域驱动设计战术模式中最为核心的一个部分--值对象,一直是被大多数愿意尝试或者正在使用DDD的开发者提及最多的概念之一.但是在学习过程中,大家会因为受到传统开发模式的影响,往往很难去运用值对象这一 ...

  5. DDD实战与进阶学习之值对象

    DDD实战与进阶 - 值对象 整体思路: 在实现此效果之前,我们先来捋一下思路,用思维导图来设计一下我们的实现步骤,如下: 你可以审查元素,下载数字背景图片,复制图片地址,或者使用其他背景图片.背景颜 ...

  6. DDD实战与进阶 - 值对象

    目录 DDD实战与进阶 - 值对象 概述 何为值对象 怎么运用值对象 来看一个例子 值对象的持久化 总结 DDD实战与进阶 - 值对象 系统小说网 wap.kuwx.net 概述 作为领域驱动设计战术 ...

  7. [Abp vNext 源码分析] - 5. DDD 的领域层支持(仓储、实体、值对象)

    一.简要介绍 ABP vNext 框架本身就是围绕着 DDD 理念进行设计的,所以在 DDD 里面我们能够见到的实体.仓储.值对象.领域服务,ABP vNext 框架都为我们进行了实现,这些基础设施都 ...

  8. 怎么把两个不同的属性值进行比较_DDD实战与进阶 值对象

    概述 作为领域驱动设计战术模式中最为核心的一个部分-值对象.一直是被大多数愿意尝试或者正在使用DDD的开发者提及最多的概念之一.但是在学习过程中,大家会因为受到传统开发模式的影响,往往很难去运用值对象 ...

  9. DDD中的值对象和实体

    文章目录 背景 定义 举例说明 总结 关于我 背景 在DDD中有两个比较重要的对象,即值对象和实体.而聚合根就是由这两个对象组成的,所以业务建模前我们都会先定义好实体和值对象,然后再构建聚合根,所以再 ...

最新文章

  1. golang 文件 文件夹 创建 读取 移动 复制 写入 遍历
  2. FastThreadLocal原理
  3. 在nginx中用X-Accel-Redirect response header控制文件下载
  4. 在SAP云平台ABAP编程环境里使用CAP模型创建Fiori应用
  5. 【文末有福利】吸烟致癌,是基因的错吗?
  6. 后缀自动机概念的温习
  7. Linux异步管道多线程速率测试
  8. JavaScript之对象学习
  9. gaussian软件linux下载,Gaussian软件下载地址及安装说明
  10. 普通母函数理解篇(PPT)
  11. 晶振外匹配电容应该怎样选取
  12. ThoughtWorks面试篇
  13. 【腾讯BUG】QQ群贴超大表情BUG,恶意炸群BUG
  14. [创业路程] 从Idea到付诸实践,你必须要知道的…创业草堂系列
  15. 计算机网络(五):IPv6
  16. HyperLPR车牌识别库代码分析(12)
  17. Windows下本地路由表
  18. three.js笔记2--两点画线
  19. Django文件部署(4.虚拟环境的配置)(全)
  20. 概率论大作业C语言验证伯努利大数定律以及相对应的强大数定律、棣莫弗-拉普拉斯中心极限定理

热门文章

  1. 记录大疆研发管理岗初面
  2. python docx 提取图片_Python提取docx文档中所有嵌入式图片和浮动图片
  3. 离散数学10__第5章 关系与函数_关系的性质_自反对称传递
  4. leetcode 881 救生艇 (python3- 贪心算法)
  5. NXP RT1052 eFlexPWM—灵活的增强型 PWM例程
  6. CVPR 2022 Oral|港中文开源PoseC3D:基于3D-CNN的骨骼动作识别框架
  7. 西瓜书(周志华)课后习题答案
  8. 虚拟机:虚拟机三种网络连接
  9. 解决yay官方源下载慢问题
  10. nohup命令解决SpringBoot/java -jar命令启动项目运行一段时间自动停止问题