我试图围绕整个CQRS/ES的想法,并考虑编写一个概念证明和如何在我们当前的应用程序中实现它的技术规范.
有问题的操作(就如何将它们映射到CQRS/ES而言)是通过文件导入批量更新复杂的文章数据 - 数据文件中的单行扩展到文章组,文章,标题,单位和属性,批量 - 加载将买方分类与供应商分类相关联并导出部分或整个分类的文件.
我读过某个地方(可能是DDDCQRS Google Group),对文章导入BC(读取Excel文件或其他网格文件)进行建模的最佳方法是将一行导入数据作为聚合,并且整个导入是聚合根.这样,在解析文件之后,我所要做的就是创建一个导入聚合,并为每一行添加该行到导入.这将在BC的事件存储中存储事件,并发布文章管理BC将订阅的事件.这有意义吗?
在当前系统中,导入在单个长时间运行的事务中运行.长时间运行应该在5到40分钟之间读取,具体取决于导入的数据量和给定用户已经存在的数据量(因为数据与先前导入的文件和当前数据进行比较).当操作中途失败时,当前整个操作将回滚.这在CQRS/ES中如何运作?
Git支持使用GPG签署提交,而GitHub将这些提交显示为“已验证”。单击“已验证”标签时,您将看到类似以下内容的内容:
该提交已使用经过验证的签名进行了签名。
我的用户名
我的名字
GPG密钥ID:
F66DEF7BA82E8647
当您合并一个拉取请求时,或者大概是在Web界面中进行提交时,它也显示为“已验证”,但带有不同的消息:
该提交是在GitHub.com上创建的,并使用GitHub的密钥使用经过验证的签名进行了签名。
GPG密钥ID:4AEE18F83AFDEB23
运行时git log --show-signature,它将显示我已经在本地签名的提交,如下所示:
gpg: Signature made 01/25/18 11:52:25 W. Europe Standard Time^M
gpg: using RSA key 3FA85DEE7B64EB7EC8F97F41F66DEF7BA82E8647^M
gpg: Good signature from "Dude" <somebody@email.com>" [ultimate]^M
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。但是,当遇到合并的请求请求时,将得到以下信息:
gpg: Signature made 01/25/18 09:07:45 W. Europe Standard Time^M
gpg: using RSA key 4AEE18F83AFDEB23^M
gpg: Can't check signature: No public key^M
Run Code Online (Sandbox Code Playgroud)
显然,这是因为我尚未将公共密钥添加到我的GPG密钥列表中。问题是:在哪里可以找到此密钥?在某处列出了吗?
编辑:显然我已经尝试过谷歌搜索,甚至在GitHub的社区论坛上提出了一个问题,但是没有得到答复。
我写了一个LINQ查询,它返回一个新类型,因为我使用了GROUP BY.因此,我创建了一个新类来将Anonymous类型转换为Strong Type.这是我的LINQ ......
var result = rpt
.GroupBy(x => new
{
CreateTime = EntityFunctions.TruncateTime(x.CreatedTime),
x.UserId,
x.ProjectId
})
.Select(x => new
{
UserId = x.Key.UserId,
ProjectId = x.Key.ProjectId,
CreateTime = x.Key.CreateTime,
TotalMinutesSpent = x.Sum(z => z.MinutesSpent)
})
.OfType<List<UserTransactionReport>>().ToList();
Run Code Online (Sandbox Code Playgroud)
我新创建的课程如下...
public class UserTransactionReport
{
public int UserId { get; set; }
public int ProjectId { get; set; }
public DateTime CreateTime { get; set; }
public int TotalMinutesSpent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何将此匿名转换为强大?