我想在领域驱动设计方法中使用Doctrine进行数据持久化。但是让我困扰的是,关联映射应该在实体内部。就纯DDD而言,这不是一个糟糕的实践吗?因为在我讨论持久性问题之前,我的域实体非常干净,现在它们的属性中有很多注释。如下所示:
<?php
namespace Domain\Model;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity
*/
class User
{
/**
* @ORM\Id
* @ORM
根据的概念,我的实体(POCO)存在于内层,它不依赖于另一个项目或库。
我正在为我的数据访问层使用ArangoDB NoSql,并且我必须在我的c#属性上使用"ArangoDB Attribute“来将我的属性映射到ArangoDD字段:
例如:
public class User
{
[AliasField("_key")]
public string Id { get; set; }
}
对于这个问题,我必须参考Arango.Client Dll!:
现在,我必须做什么来解决这个问题呢?如何删除我的依赖关系?
有谁能帮我吗?
我正在做一个涉及版本化实体的项目,这样用户修改的整个历史都会被存档。
基本上,这个想法是在创建实体时,其内容的版本1也保存在存档表中。每当实体被修改时,增量版本也会被存储。
将实体的状态保存到存档表是由ArchiveService处理的。
当实体被持久化时,需要调用ArchiveService来创建版本1,因此最合乎逻辑的方法似乎是从存储库中调用它,从而将服务作为依赖项传递给存储库:
public class Repository {
private ArchiveService archiveService;
public Repository(ArchiveService
我对DDD很陌生,现在我正在实现用户注册。
基本上,流程是:
控制器接收请求
将接收的数据从客户端映射到用户域模型。
将用户域模型映射到EF核心实体模型。
使用EF将用户添加到数据库。
我对IdGeneratorService类和BCryptService类的位置有一些疑问。目前,它们都有一个域层的接口:src/Domain/Model/Services。它们的实现驻留在我的基础结构层:src/Infrastructure/Services中。它们也都在用户域模型中被调用:
public class User
{
private User(
lo
我正在学习有关DDD的知识,所以如果我的问题太天真了,很抱歉。我认为我需要使用Local Data Transfer Object来向用户显示数据,因为很多属性都不是任何实体/值对象的一部分。
但是,我不确定这种DTO应该在哪里实现-在域层还是在应用程序服务层。DTO实现似乎是域的一部分,但这意味着当我在服务层中创建DTO集合并将其传递给表示层时,我必须在表示层中引用域层,这似乎是错误的。
使用DDD原则实现DTO的正确方法是什么?
目前正在学习如何在.NET core MVC中实现DDD项目,并且在尝试使用efcore创建Db表时遇到了一个问题。基本上,我有以下内容:我有3层,域+应用程序+基础设施,我的实体在域层,但我的DbContext文件在域层 当我尝试运行命令add-migration时,问题就开始了,它给出了以下错误: no dbcontext was found in assembly 'project.domain'. ensure that you're using the correct assembly and that the type is neither abstrac
我一直在阅读Pro ASP.NET MVC框架,Sanderson,在第11章中讨论了数据验证。
在第390页中,我们看到了将验证逻辑移动到您的模型层的部分。在本节中,我们在第392页中看到了一些代码,显示了如何实现验证。
代码实现了一个GetRuleViolations()方法,如果有什么事情不正常的话,Save()方法会使用它抛出一个RuleException。
然而,在我看来,域层和数据访问层没有区别,下面是代码:
public void Save() {
var errors = GetRuleViolations();
if (errors.Count > 0)