在 ASP.Net 应用程序中使用域驱动设计实体

问题描述 投票:0回答:1

我开始使用 ASP.Net 编写领域驱动设计应用程序。 这对我来说是一个相对较新的主题,我想了解最佳实践。

使用 DDD 实体类作为 ASP.Net CRUD 操作的模型类是否正确,或者我们应该为此定义单独的 POCO 类?

下面的例子中,Skill可以是DDD实体类吗?

[HttpPost()]
public async Task<Skill?>? SaveSkill(Skill skill)
{
    skillList.Add(skill);

    return await Task.FromResult(skill); ;
}

这两种方法都适合我。 但是,我喜欢用工厂和私有 setter 来定义实体类,这种方式不起作用,因为 POST 需要默认的无参数构造函数。

c# asp.net domain-driven-design
1个回答
0
投票

这取决于您对 DDD 实体的理解。

如果DDD实体是由UI驱动的,则需要将其映射到实体,以允许前端和后端之间更大的灵活性。

因此,在这种情况下,您应该在前端和后端之间创建契约,这将是您的 DTO (POCO),然后将用于将数据保存在数据库中。

最有可能返回视图的实体也需要映射。

在项目的早期阶段,这种映射通常看起来是多余的,但随着时间的推移,DTO 中会添加更多信息,这些信息不适合数据库模型。

旁注

您的代码错误地保留了实体,它应该在添加实体后包含调用

DbContext.SaveChangesAsync

© www.soinside.com 2019 - 2024. All rights reserved.