小编JPP*_*JPP的帖子

CQRS/Event Sourcing,如何获得一致的数据来应用业务规则?

有时我正在使用CQRS模式和事件采购开发一个小项目.我有一个结构性问题,我不知道要采取哪种解决方案来解决它.

想象一下以下示例:发送一个命令,其中包含银行客户存入一定金额的信息(DepositCommand).在命令处理程序/实体/聚合(对讨论来说不重要)中,必须应用业务规则; 如果客户是前10%中的一个,在账户中有更多的钱赢得一些奖金.

问题是如何获得最新,一致的数据,以了解客户在存款后是否位于前10%.

  • 我无法使用事件存储,因为无法进行此类查询;
  • 我不确定我是否可以使用读取模型,因为它不是100%确定是最新的.

如果您需要数据库中的数据来应用业务规则,您如何做?如果我不注意最新数据,我会遇到向两个不同客户提供奖品的可能性

期待听到您的意见.

domain-driven-design cqrs event-sourcing

10
推荐指数
1
解决办法
1834
查看次数

在后续页面中打印表头

我正在尝试在使用浏览器打印功能时在后续页面中显示表头.使用Firefox我只能在第一页显示标题.标头由标签定义.代码如下:

<html>
<head> 
    <style type="text/css">
        @media print
        {           
            thead
            {
                display:  table-header-group;    
            }
        }
    </style>
</head>
<body>      
    <table>
        <thead>
            <tr><td>header1</td></tr>
            <tr><td>header2</td></tr>
            <tr><td>header3</td></tr>
            <tr><td>header4</td></tr>
            <tr><td>header5</td></tr>
            <tr><td>header6</td></tr>
            <tr><td>header7</td></tr>
            <tr><td>header8</td></tr>
            <tr><td>header9</td></tr>
            <tr><td>header10</td></tr>
            <tr><td>header11</td></tr>  
            <tr><td>header12</td></tr>
            <tr><td>header13</td></tr>                  
        </thead>
        <tbody>
            <tr><td>
            Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>
            Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>
            Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>
            Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>
            Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>Text<br/>          
            </td></tr>
        </tbody>
    <table>

</body>
Run Code Online (Sandbox Code Playgroud)

使用打印预览来测试我的描述.如果删除以下代码行

<tr><td>header13</td></tr>  
Run Code Online (Sandbox Code Playgroud)

标题出现在我想要的所有页面中.怎么解决这个问题?这似乎是表头的最大高度问题.

html css printing

8
推荐指数
1
解决办法
5380
查看次数

DDD 性能问题急切加载 AR 子实体

在过去的日子里,我正在制作一个示例应用程序来申请/学习 DDD。DDD 的原则之一(如果我错了,请纠正我)是对实体的所有更改都应该通过聚合根(AR)进行,并且 AR 应该加载他的子实体。这样更容易验证聚合一致性。只有一个小细节让我感到困扰。我无法理解 DDD 如何处理性能问题。想象一下,我有一个 Order(AR),比如说有 20000、30000 个 OrderLine。急切加载大量子记录时会存在性能问题。将订单说成 AR,您可以想象另一种可能发生这种情况的场景。我期待着阅读您对这个主题的看法。

domain-driven-design eager-loading

2
推荐指数
1
解决办法
716
查看次数

DDD - 聚合根加载/查询性能

我正在玩DDD并弹出这个问题.我如何加载子聚合根?会出现几个性能问题.想象一下以下示例:

public AggregateRoot1
{
     #region
        properties
     #endregion

     public AggregateRoot2 AR2{get;set;}

     public IEnumerable<AggregateRoot3> AR3List{get;set;}

     (...)
}
Run Code Online (Sandbox Code Playgroud)

如果我在获得AggregateRoot1时加载AggregateRoot2和AggregateRoot3列表,那么图表就会非常庞大​​.这似乎不是一个好方法.

我有两个选择:

  1. 替代AggregateRoot2 AR2通过的Guid AR2IdIEnumerable的AggregateRoot3> AR3List通过IEnumerable的GUID> AR3ListIds.所有AR引用都应该由ID代替.
  2. 因为我不喜欢IEnumerable ARListIds方法,我正在考虑删除0 ...*引用AR.需要AR列表数据的所有操作都应该通过像David Masters这样的域服务来实现

顺便说一句,我不考虑使用延迟加载.

我很期待听到你对AR儿童装载的看法.谢谢

domain-driven-design ddd-repositories aggregateroot cqrs

2
推荐指数
1
解决办法
1980
查看次数

椭圆几何绑定点

是否有自动获取椭圆行程的所有点,没有填充点?

wpf geometry ellipse

0
推荐指数
1
解决办法
2633
查看次数

两个组合框之间的WPF主/明细数据绑定

我有两个组合框,其中Parent必须显示国家/地区列表,子组合必须显示所选国家/地区的城市列表.数据存储在Dictionary<Int32, List<String>>具有名称的数据中CountriesCitiesList.我有以下代码

<ComboBox x:Name="cbCountriesList" 
    DataContext="{Binding CountriesCitiesList}"
    IsSynchronizedWithCurrentItem="true">
</ComboBox>

<ComboBox x:Name="cbCitiesList" VirtualizingStackPanel.IsVirtualizing="True"                  
          ItemsSource="{Binding CountriesCitiesList}"
          IsSynchronizedWithCurrentItem="true">
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

问题是在城市组合中我无法显示所选国家的城市列表.我觉得它错过了最后一步.

data-binding wpf

0
推荐指数
1
解决办法
3283
查看次数