首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
ABP 值对象 数据库
2024-09-03
ABP框架 - 值对象
文档目录 本节内容: 简介 值对象基类 最佳实践 简介 “一个表示领域的一个描述性方面的没有概念上的身份对象,称为值对象.“(Eric Evans). 与一个有身份(Id)实体相反,一个值对象没有身份.如果两个实体的身份(Id)不同,它们被认为是不同对象/实体,即使其它所有的属性都相同.比如两个不同的Person实体,它们的Name.Surname和Age相同,如果它们的Id不同,我们就认为这是两个不同的Person.但是,对于一个Address(地址,一个经典的值对象)类,如果两个地址有相同的
[2017-09-04]Abp系列——为什么值对象必须设计成不可变的
本系列目录:Abp介绍和经验分享-目录 这篇是之前翻备忘录发现漏了的,前阵子刚好同事又提及过这个问题,这里补上. 本文重点在于理解什么是值对象的不可变性. Abp的ValueObject以及EF的ComplexType Abp中对应DDD概念的值对象有个基类:ValueObject<T>. 这个基类默认重写了Equals,GetHashCode等用于比较两个实例是否相等的方法和重载了==,!=操作符. 在构建一些比较复杂的实体时,我们可以把属于同一个概念的多个属性或字段封装成一个值对象. 这个
[Abp vNext 源码分析] - 5. DDD 的领域层支持(仓储、实体、值对象)
一.简要介绍 ABP vNext 框架本身就是围绕着 DDD 理念进行设计的,所以在 DDD 里面我们能够见到的实体.仓储.值对象.领域服务,ABP vNext 框架都为我们进行了实现,这些基础设施都存放在 Volo.Abp.Ddd.Domain 项目当中. 本篇文章将会侧重于理论讲解,但也只是一个抛砖引玉的作用,关于 DDD 相关的知识可以阅读 Eric Evans 所编写的 <领域驱动设计:软件核心复杂性应对之道>. PS: 该书也是目前我正在阅读的 DDD 理论书籍,因为基于 DDD 理
ABP文档翻译--值对象
本人是ABP初学者,在看英文文档和@tkb至简 的ABP框架理论研究总结(典藏版)时,发现大神@tkb至简中少了对Value Objects的翻译,看文档是新的,大神没时间把,小弟给补充上. 介绍 值对象基类 最佳实践 介绍 "用于描述领域的某个方面而本身没有概念标识的对象称为 a VALUE OBJECT"(Eric Evans) 对于实体是相反的,实体有它们的表示(id),一个值对象没有标识.如果两个实体的标识不相同,即使它们所有的其他实体属性是一样的,它们也被称为不同的对象/实体
ABP官方文档翻译 3.2 值对象
值对象 介绍 值对象基类 最佳实践 介绍 "展现领域描述性层面且没有概念性身份的对象称之为值对象."(Eric Evans). 和实体相反,实体有身份标示(Id),值对象没有身份标示.如果两个实体的身份标示是不同的,那么就认为他们是不同的对象/实体,即使他们的所有属性都是一样的.考虑两个不同的人有相同的名字.姓氏和年龄,但是他们是不同的人,如果他们的身份编号不同的话.但是,对于一个地址(经典的值对象)类,如果两个地址有相同的国家.城市.街道编号等等,则认为为相同的地址. 在DDD中,值
.net c#将数据库数据对象转换为实体值对象
using System; using System.Data; namespace Sunlib { public static class DataHelper { //将数据库数据对象转换为实体值对象 //T:要转换的类型 //columnName:列名 //defValue:默认值 public static T ToValue<T>(DataRow dr, string columnName,T defValue) { if(dr.Table.Columns.Contains(col
如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interface IRoleDiscountRelationRepository// : IRepository<RoleDiscountRelation> { RoleDiscountRelation Get(string roleId); } 其中涉及的到问题是关于值对象的持久化问题.是的,由于我们之前的
EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject方法 修改DbPropertyValues当前值:索引器 克隆实体:Clone方法 设置实体的值:SetValues方法 克隆实体:SetValues 获取和设置实体的单个属性:Property方法 查询实体的属性是否被修改:IsModified方法 修改导航属性 重新加载实体:Reload方法 读取相关联的
《Entity Framework 6 Recipes》中文翻译系列 (44) ------ 第八章 POCO之POCO中使用值对象和对象变更通知
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-4 POCO中使用值对象(Complex Type--也叫复合类型)属性 问题 你想在POCO中使用值对象. 解决方案 假设你有如图8-5所示的模型.在模型中,属性Name是一个值对象. 图8-5. 一个包含employee的模型,属性Name是一个值对象,它由FirstName和LastName复合而成 POCO支持值对象,当你重构两个或多个实体属性到一个值对象时,一个新的类在默认情
应用程序框架实战十六:DDD分层架构之值对象(介绍篇)
前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使用DDD分层架构,但你却从来没有使用过值对象,这毫不奇怪,因为多年来养成的数据建模思维已经牢牢把你禁锢,以致于你在使用面向对象方式进行开发时,还是以数据为中心. 当我们完成了基本的需求分析以后,如果说需要进行设计,那么你能想到的就是数据库表及表关系的设计,这就是数据建模.数据建模的主要依据是数据库范式设计,根据要求严格程度的递增分为
DDD 领域驱动设计-三个问题思考实体和值对象(续)
上一篇:DDD 领域驱动设计-三个问题思考实体和值对象 说实话,整理现在这一篇博文的想法,在上一篇发布出来的时候就有了,但到现在才动起笔来,而且写之前又反复读了上一篇博文的内容及评论,然后去收集资料,真正去写的时候,才发现这类的博文真不是一般的难写,一句话要反复揣摩,并进行理解,最重要的是半天才蹦出一句话. 看了上面的文字,你可能会觉得我是为了写博文而写博文,其实并不是如此,我现在觉得写这类博文的目的在于梳理自己的观点,然后再进行表达出来,有的人可能会觉得为什么要纠结某一类观点?或者认为陷在一个
DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射
写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉,但我觉得应该会很爽,博文后面再记录下用过的感受,这边就不多说. 阅读目录: 上一篇回顾-设计误区 值对象映射探讨 走过的坑-正确配置 后记-附带(CNBlogs 使用 Mardown 小记) 领域驱动设计中,关于领域模型和 EntityFramework 之间的映射配置,其实之前写过一篇<死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如
Code First05--CodeFirst中值对象
今天主要介绍EF Code First中一个高级部分:Value Object,中文翻译过来叫做值对象. 所谓的值对象就是一些没有生命周期,也没有业务逻辑上唯一标识符的类.哪些类是Entity,哪些类是Value Object不是固定的,取决于具体的业务逻辑.比如说Customer这个类,如果在CRM系统当中,它是最重要的信息,我们需要跟踪它的状态,管理它的生命周期.但是在其他系统中,客户信息可能只代表一个名字和一些其他的属性. 下面我有一个需求,我们的订单系统有一个Customer类.在我们以
Java---设计模块(值对象)
★ 场景和问题 在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互? ★ 基本的编写步骤 ◎第1步:写一个类,实现可序列化(如果以后数据是往数据库里存的,那么可以不序列化,节省资源) ◎第2步:私有化所有属性,保持一个默认构造方法(public无参) ◎第3步:为每个属性提供get().set()方法(如果是boolean型变量,最好把get改成is) ◎第4步:推荐覆盖实现equals().hashCode()和toString(
DDD分层架构之值对象(介绍篇)
DDD分层架构之值对象(介绍篇) 前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使用DDD分层架构,但你却从来没有使用过值对象,这毫不奇怪,因为多年来养成的数据建模思维已经牢牢把你禁锢,以致于你在使用面向对象方式进行开发时,还是以数据为中心. 当我们完成了基本的需求分析以后,如果说需要进行设计,那么你能想到的就是数据库表及表关系的设计,这就是数据建模.数据建模的主要依据是数据库范
Value Object(值对象)如何使用 EF 进行正确映射
DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射 写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉,但我觉得应该会很爽,博文后面再记录下用过的感受,这边就不多说. 阅读目录: 上一篇回顾-设计误区 值对象映射探讨 走过的坑-正确配置 后记-附带(CNBlogs 使用 Mardown 小记) 领域驱动设计中,关于领域模型和 EntityFramework 之间的映射配置,其实之前写过一篇<死去活来,
DDD理论学习系列(7)-- 值对象
DDD理论学习系列--案例及目录 1.引言 提到值对象,我们可能立马就想到值类型和引用类型.而在C#中,值类型的代表是strut和enum,引用类型的代表是class.interface.delegate等.值类型和引用类型的区别,大家肯定都知道,值类型分配在栈上,引用类型分配在堆上. 那是不是值类型对应的就是值对象,引用类型对应的就是实体吗?很抱歉,不是的. 值对象我们要分开来看,其包含两个词:值和对象.值是什么?比如,数字(1.2.3.14),字符串("hello world".&
[0] DDD领域驱动设计(二) 之 值对象
DDD中实体对象与值对象的解释比较抽象.主要根据持续性与 ID 识别来区分. ID并非某一对象的直观自然属性,而是在分析建模之 后,赋给模型中的实体类,来达到跟踪,区别,存储目的的一个特值. 结合项目实践及 DDD一书中的理论,感觉应该从以下几方面分析: 1.主从:某一概念是主动还是从属性的,如果是从属性的,且这种 从属性的生命周期严格依赖于某实体,如可以考虑成为值对象的候 选. 2. 复用:某一概念是否可以被复用,共享,复制.象对应领域属性, 规格,策略,规则的类,虽然对其他实体类的依赖性不是
从壹开始微服务 [ DDD ] 之八 ║剪不断理还乱的 值对象和Dto
缘起 哈喽大家周四好,时间是过的真快,这几天一直忙着在公司的项目,然后带带新人,眼看这周要过去了,还是要抽出时间学习学习,这些天看到群里的小伙伴也都在忙着新学习,还是很开心的,至少当时的初衷已经达到了,一起学习一起进步嘛,哪怕是对现在或者是对以后的工作有一丢丢的帮助,也是不枉此时的努力,哈哈夜里写文章总是容易多想,好啦,废话不多说,上次咱们说到了<从壹开始微服务 [ DDD ] 之七 ║项目第一次实现 & CQRS初探>,今天本来应该接着写 领域命令 了,在设计的领域命令的时候,发现了
DDD Code First 迁移数据实现EF CORE的软删除,值对象迁移配置
感谢Jeffcky大佬的博客: EntityFramework Core 2.0全局过滤 (HasQueryFilter) https://www.cnblogs.com/CreateMyself/p/8491058.html 什么是值对象 没有唯一的标识,固定不变的,表示一个具体的概念,用来描述一个东西的特征,代表是什么,使用时直接添加或替换,值对象在迁移时,会以字段的形式迁移到数据库中 软删除 定义删除的接口 public interface ISoftDelete { bool IsDel
热门专题
gateway 断言法则
<target>.xx 和<soure>.xx 的属性冲突
linux chrome 自动启动全屏
docker如何查看镜像仓库
datagrid列可以进行编辑
python 获取路径父目录
git 查询指定时间代码行
实现十进制无符号整数m到十六进制数的转换
微信小程序支持class语法吗
图片 js 上传 限制 10M
war包中没有template
lgbm sklearn接口
Python如何接收来着dll的指针
ios笔记本自动播放音乐
如何编写windows防火墙程序
java 生成八位随机字母数字
mongo查询 条件过滤
go fun 执行顺序
centOS 重启后挂载点丢失
必须先安装windows服务使用installutil