Abp 聚合测试
Abp 官网开始的教程例子,是IRpositoty<entity> 直接出现在应用层。但是如果是一个聚合根也会这样吗? 那么聚合根是访问仓储的最小单元,要通过聚合根来操作业务,就是实体,那么实体的增删改查,也应该在聚合根里面。
这就就有一个问题,实体继承了聚合根,,他没有仓储,怎么保存呢?
方法一: 依赖注入,这是不行的,这样数据库迁移不成功。
public class Order :AggregateRoot, IRepository<Order>, ICreationAudited
{
[NotMapped]
private IRepository<Order> _repository { get; set; }
public Order(IRepository<Order> repository)
{
_repository = repository;
}
public long? CreatorUserId { get; set; }
public DateTime CreationTime { get; set ; }
public List<OrderItem> OrderItem { get; set; }
public string Remark { get; set; }
public Address Address { get; set; } public Order Insert(Order entity)
{
return entity;
}
}
public class Order :AggregateRoot, IRepository<Order>, ICreationAudited
{ public long? CreatorUserId { get; set; }
public DateTime CreationTime { get; set ; }
public List<OrderItem> OrderItem { get; set; }
public string Remark { get; set; }
public Address Address { get; set; } public Order Insert(Order entity)
{
return entity;
}
}
public class Test2 : Test2Repository, IAggregateRoot, ICreationAudited
{
public long? CreatorUserId { get; set; }
public DateTime CreationTime { get; set; } public string Remark { get; set; } public ICollection<IEventData> DomainEvents => throw new NotImplementedException(); public int Id { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public bool IsTransient()
{
throw new NotImplementedException();
}
}
这样编译不过去,因为Test2Repository在EF那一层,而Core 是谁也不依赖的,在最下面,这个也是行不通的。
方法四:是这个这个聚合根,再实现一个IOrder 接口,这个接口和仓储接口有重合,在应用层,暴露IOrder 接口就行了。
Abp 聚合测试的更多相关文章
- 关于ABP聚合根类AggregateRoot的思考
AggregateRoot和Entity的区别 AggregateRoot继承于Entity,并实现了IGeneratesDomainEvents接口 public class AggregateRo ...
- java1.8中Lambda表达式reduce聚合测试例子
public class LambdaTest { public static void main(String[] args) { // 相当于foreach遍历操作结果值 Integer out ...
- ABP入门系列(11)——编写单元测试
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 前言 In computer programming, unit testing is a ...
- Java高级特性 第11节 JUnit 3.x和JUnit 4.x测试框架
一.软件测试 1.软件测试的概念及分类 软件测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别.它是帮助识别开发完成(中间或最终 ...
- 使用 DryIoc 替换 Abp 的 DI 框架
一.背景 你说我 Castle Windsor 库用得好好的,为啥要大费周章的替换成 DryIoc 库呢?那就是性能,DryIoc 是一款优秀而且轻量级的 DI 框架,整个项目代码就两个文件,加起来代 ...
- Java Junit测试框架
Java Junit测试框架 1.相关概念 Ø JUnit:是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.它是用于单元测试框架体系xUnit的一个实例(用于java语言).主要 ...
- Elasticsearch 6.x 入门测试
首先听一下官方的话: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 我尝试了使用Java作为Cl ...
- 2020 | 可替代Selenium的测试框架Top15
本文首发于 微信公众号: 软测小生 Selenium是一种开源自动测试工具.它可以跨不同的浏览器和平台在Web应用程序上执行功能,回归,负载测试.Slenium是最好的工具之一,但确实有一些缺点. 业 ...
- 小试牛刀ElasticSearch大数据聚合统计
ElasticSearch相信有不少朋友都了解,即使没有了解过它那相信对ELK也有所认识E即是ElasticSearch.ElasticSearch最开始更多用于检索,作为一搜索的集群产品简单易用绝对 ...
随机推荐
- layer快速点击会触发多次回调
场景还原 测试同学反馈点击了一次操作,为什么会有两条操作记录? 我:???? 排查思路 查看日志,看一下是不是发了两次请求,果不其然啊: 并发了,同一时间发送了两次请求,出现了脏写. 原因 系统的co ...
- ios UISegmentedControl 用法举例
UISegmentedControl * segmentControl = [[UISegmentedControl alloc]initWithFrame:CGRectMake(0, 0, 160, ...
- leetcode 96. Unique Binary Search Trees 、95. Unique Binary Search Trees II 、241. Different Ways to Add Parentheses
96. Unique Binary Search Trees https://www.cnblogs.com/grandyang/p/4299608.html 3由dp[1]*dp[1].dp[0]* ...
- 使用java NIO及高速缓冲区写入文件
byte[] bytes = Files.readAllBytes(Paths.get("E:\\pdf\\aaa\\html\\text.txt").normalize()); ...
- 分组卷积+squeezenet+mobilenet+shufflenet的参数及运算量计算
来一发普通的二维卷积 1.输入feature map的格式为:m * m * h1 2.卷积核为 k * k 3.输出feature map的格式为: n * n * h2 参数量:k * k * h ...
- Java工程师学习指南第4部分:Java并发编程指南
本文整理了微信公众号[Java技术江湖]发表和转载过的Java并发编程相关优质文章,想看到更多Java技术文章,就赶紧关注本公众号吧吧. [纯干货]Java 并发进阶常见面试题总结 [Java基本功] ...
- Redis安装与配置问题
Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- Python_小林的爬取QQ空间相册图片链接程序
前言 昨天看见某人的空间有上传了XXXX个头像,然后我就想着下载回来[所以本质上这是一个头像下载程序],但是一个个另存为太浪费时间了,上网搜索有没有现成的工具,居然要注册码,还卖45一套.你们的良心也 ...
- 【Qt开发】 QT:make: Nothing to be done for `first'和error:QtSql:No such file or directory
http://blog.csdn.NET/heqiuya/article/details/7774208 这是QT编程中常见的两个编译错误.可能你的代码在window下编译能正常通过,可是到到Linu ...
- elasticsearch 的post put 方式的对比 setting mapping设置 - 添加查询数据
1.POST和PUT都可以用于创建 2.PUT是幂等方法,POST不是.所以post用户更新,put用于新增比较合适. 参考:https://yq.aliyun.com/articles/366099 ...