小编Chr*_*son的帖子

聚合根引用其他聚合根

我目前正在使用DDD工作很多,并且在从其他聚合根加载/操作聚合根时遇到问题.

对于我模型中的每个聚合根,我也有一个存储库.存储库负责处理根的持久性操作.

假设我有两个聚合根,包含一些成员(实体和值对象).

AggregateRoot1和AggregateRoot2.

AggregateRoot1有一个引用AggregateRoot2的实体成员.

  1. 当我加载AggregateRoot1时,我是否应该加载AggregateRoot2?
  2. AggregateRoot2的存储库是否应对此负责?
  3. 如果是这样,AggregateRoot1中的实体是否可以调用AggregateRoot2的存储库进行加载?

此外,当我在AggregateRoot1中的实体与AggregateRoot2之间创建关联时,是应该通过实体还是通过AggregateRoot2的存储库来完成?

希望我的问题有道理.

[编辑]

当前的解决方案

Twith2Sugars的帮助下,我提出了以下解决方案:

如问题中所述,聚合根可以具有引用其他根的子项.将root2分配给root1的其中一个成员时,root1的存储库将负责检测此更改,并将其委派给root2的存储库.

public void SomeMethod()
{
    AggregateRoot1 root1 = AggregateRoot1Repository.GetById("someIdentification");
    root1.EntityMember1.AggregateRoot2 = new AggregateRoot2();
    AggregateRoot1Repository.Update(root1);
}

public class AggregateRoot1Repository
{
    public static void Update(AggregateRoot1 root1)
    {
        //Implement some mechanism to detect changes to referenced roots
        AggregateRoot2Repository.HandleReference(root1.EntityMember1, root1.EntityMember1.AggregateRoot2)
    }
}
Run Code Online (Sandbox Code Playgroud)

这只是一个简单的例子,没有Demeter法或其他最佳原则/实践包括:-)

进一步评论赞赏.

domain-driven-design aggregate loading repository aggregateroot

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

如何检查Redis服务器是否正在运行

如何检查Redis服务器是否正在运行?

如果它没有运行,我想回退使用数据库.

我正在使用FuelPHP框架,所以我愿意接受基于此的解决方案,或者只是标准的PHP.

php fuelphp

24
推荐指数
6
解决办法
3万
查看次数

使用PHP将数据写入文件

我需要使用下面的代码发布数据到php文件,将其保存在文本文件中.我只是不知道如何创建php文件来接收下面的数据并将其保存在文本文件中.尽可能简单.

try {  
    // Add your data  
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);  
    nameValuePairs.add(new BasicNameValuePair("stringData", "12345"));  
    nameValuePairs.add(new BasicNameValuePair("stringData", "AndDev is Cool!"));  
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  

    // Execute HTTP Post Request  
    HttpResponse response = httpclient.execute(httppost);  
    String responseText = EntityUtils.toString(response.getEntity()); 
    tv.setText(responseText);             
} catch (ClientProtocolException e) {  
    // TODO Auto-generated catch block  
} catch (IOException e) {  
    // TODO Auto-generated catch block  
}  
Run Code Online (Sandbox Code Playgroud)

php post text http

22
推荐指数
2
解决办法
7万
查看次数

捆绑包格式无法识别,无效或不适合

在此输入图像描述

Xcode中:8.1

语言:Objective-C的

我可以在我的iPhone上运行该项目,但无法在模拟器上运行.

我试过了:

1)删除DerivedData文件夹的所有数据

2)清理项目并重新启动项目.

3)删除资源文件夹.

但那没用!

xcode ios

12
推荐指数
3
解决办法
1万
查看次数

在未聚焦的文本输入中显示闪烁的光标

我需要在没有任何黑客的情况下这样做.谢谢.

html javascript

6
推荐指数
1
解决办法
2802
查看次数

Rails 超类与迁移类不匹配

我是初级 Ruby on Rails 开发人员。

我有这个问题:我已将 Rails 从 5.1 更新到 6。如果我尝试运行

rails db:migrate 
Run Code Online (Sandbox Code Playgroud)

有错误:

类型错误:类 CreateVacancyFields 的超类不匹配

查看我的迁移文件:

class CreateVacancyFields < ActiveRecord::Migration[ 5.1 ]
Run Code Online (Sandbox Code Playgroud)

好的,我已经将 5.1 更改为 6.0,如下所示:

class CreateVacancyFields < ActiveRecord::Migration[ 6.0 ]
Run Code Online (Sandbox Code Playgroud)

但这没有帮助。我做错了什么?

ruby ruby-on-rails

4
推荐指数
1
解决办法
2184
查看次数

当元素只出现一次时应用CSS?

是否有任何 CSS 选择器(CSS3+ 都可以)在元素仅出现一次时将某些样式应用于元素?

例如,以下 CSS 规则:

border: 1px solid black;
Run Code Online (Sandbox Code Playgroud)

...仅当HTML 中仅出现一次.info时才适用于.info 。

所以,

<p class="info">This would have a border because there is only one</p>
Run Code Online (Sandbox Code Playgroud)

和,

<p class="info">This would not have a border because there are two</p>
<p class="info">And neither would this</p>
Run Code Online (Sandbox Code Playgroud)

我猜我必须以编程方式应用一个附加类,例如:.single-occurrence或使用 Javascript 计算出现次数?

编辑:

让我澄清一些事情。

当我提到 Javascript 作为我正在尝试做的事情的解决方案时 - 这并不意味着我将使用它。我尽量避免使用 JS 来处理任何与行为无关的事情。所以我不需要 Javascript 答案,这非常容易完成 - 我的问题是关于 CSS 的。

另外,对于那些感到困惑的人:页面上有时只有一个类的原因是因为我使用的实际类是: search-result。有时只有一个结果。但仅仅因为只有一个并不意味着该项目不能属于名为search-result 的对象类的一部分。从语义上(和逻辑上)来说,当然可以存在一个项目的一类。有时,我认为人们应该更多地考虑语义,而不是应用一揽子规则。

css

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

使用Codeigniter进行图像缓存

如何使用Codeigniter缓存图像?图像未存储在我的数据库中.

谢谢!

php caching codeigniter image

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