我目前正在使用DDD工作很多,并且在从其他聚合根加载/操作聚合根时遇到问题.
对于我模型中的每个聚合根,我也有一个存储库.存储库负责处理根的持久性操作.
假设我有两个聚合根,包含一些成员(实体和值对象).
AggregateRoot1和AggregateRoot2.
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
如何检查Redis服务器是否正在运行?
如果它没有运行,我想回退使用数据库.
我正在使用FuelPHP框架,所以我愿意接受基于此的解决方案,或者只是标准的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) Xcode中:8.1
语言:Objective-C的
我可以在我的iPhone上运行该项目,但无法在模拟器上运行.
我试过了:
1)删除DerivedData文件夹的所有数据
2)清理项目并重新启动项目.
3)删除资源文件夹.
但那没用!
我是初级 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)
但这没有帮助。我做错了什么?
是否有任何 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 的对象类的一部分。从语义上(和逻辑上)来说,当然可以存在一个项目的一类。有时,我认为人们应该更多地考虑语义,而不是应用一揽子规则。
如何使用Codeigniter缓存图像?图像未存储在我的数据库中.
谢谢!