EFCore:关于DDD中值对象(Owns)无法更新数值
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)无法更新数值相关推荐
- JPA实现领域驱动设计(DDD) 中值对象的持久化
文章目录 什么是DDD值对象? 实现方式 单一值对象 改变表中映射的字段的名称 根据值对象的单一属性查询或多属性的动态查询 多个值对象 根据值对象的单一属性查询或多属性的动态查询 什么是DDD值对象? ...
- DDD(五)——值对象
1.引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象.唯一标识.值对象,值就是数字1.2.3,字符串"1","2","3&qu ...
- 数据、事实、实体、值对象、事务、不变性
数据有两个重要属性:首先数据是基于时间的,数据是表达一段时间内一个逻辑为真的事实.另外一个属性是数据本质上是不可变的,因为和时间有关,我们是不能回到过去改变数据的真实性.这两个属性就意味着:对数据你其 ...
- 如何运用DDD(一):值对象
作为领域驱动设计战术模式中最为核心的一个部分--值对象,一直是被大多数愿意尝试或者正在使用DDD的开发者提及最多的概念之一.但是在学习过程中,大家会因为受到传统开发模式的影响,往往很难去运用值对象这一 ...
- DDD实战与进阶学习之值对象
DDD实战与进阶 - 值对象 整体思路: 在实现此效果之前,我们先来捋一下思路,用思维导图来设计一下我们的实现步骤,如下: 你可以审查元素,下载数字背景图片,复制图片地址,或者使用其他背景图片.背景颜 ...
- DDD实战与进阶 - 值对象
目录 DDD实战与进阶 - 值对象 概述 何为值对象 怎么运用值对象 来看一个例子 值对象的持久化 总结 DDD实战与进阶 - 值对象 系统小说网 wap.kuwx.net 概述 作为领域驱动设计战术 ...
- [Abp vNext 源码分析] - 5. DDD 的领域层支持(仓储、实体、值对象)
一.简要介绍 ABP vNext 框架本身就是围绕着 DDD 理念进行设计的,所以在 DDD 里面我们能够见到的实体.仓储.值对象.领域服务,ABP vNext 框架都为我们进行了实现,这些基础设施都 ...
- 怎么把两个不同的属性值进行比较_DDD实战与进阶 值对象
概述 作为领域驱动设计战术模式中最为核心的一个部分-值对象.一直是被大多数愿意尝试或者正在使用DDD的开发者提及最多的概念之一.但是在学习过程中,大家会因为受到传统开发模式的影响,往往很难去运用值对象 ...
- DDD中的值对象和实体
文章目录 背景 定义 举例说明 总结 关于我 背景 在DDD中有两个比较重要的对象,即值对象和实体.而聚合根就是由这两个对象组成的,所以业务建模前我们都会先定义好实体和值对象,然后再构建聚合根,所以再 ...
最新文章
- golang 文件 文件夹 创建 读取 移动 复制 写入 遍历
- FastThreadLocal原理
- 在nginx中用X-Accel-Redirect response header控制文件下载
- 在SAP云平台ABAP编程环境里使用CAP模型创建Fiori应用
- 【文末有福利】吸烟致癌,是基因的错吗?
- 后缀自动机概念的温习
- Linux异步管道多线程速率测试
- JavaScript之对象学习
- gaussian软件linux下载,Gaussian软件下载地址及安装说明
- 普通母函数理解篇(PPT)
- 晶振外匹配电容应该怎样选取
- ThoughtWorks面试篇
- 【腾讯BUG】QQ群贴超大表情BUG,恶意炸群BUG
- [创业路程] 从Idea到付诸实践,你必须要知道的…创业草堂系列
- 计算机网络(五):IPv6
- HyperLPR车牌识别库代码分析(12)
- Windows下本地路由表
- three.js笔记2--两点画线
- Django文件部署(4.虚拟环境的配置)(全)
- 概率论大作业C语言验证伯努利大数定律以及相对应的强大数定律、棣莫弗-拉普拉斯中心极限定理
热门文章
- 记录大疆研发管理岗初面
- python docx 提取图片_Python提取docx文档中所有嵌入式图片和浮动图片
- 离散数学10__第5章 关系与函数_关系的性质_自反对称传递
- leetcode 881 救生艇 (python3- 贪心算法)
- NXP RT1052 eFlexPWM—灵活的增强型 PWM例程
- CVPR 2022 Oral|港中文开源PoseC3D:基于3D-CNN的骨骼动作识别框架
- 西瓜书(周志华)课后习题答案
- 虚拟机:虚拟机三种网络连接
- 解决yay官方源下载慢问题
- nohup命令解决SpringBoot/java -jar命令启动项目运行一段时间自动停止问题