我的数据库表“垃圾邮件”中包含用户评论中不允许的单词。如果用户使用垃圾邮件表中的任何单词,他们的评论将被自动拒绝。在这种情况下,垃圾邮件是一个值对象吗?因为它不属于任何实体。
public class Spam : ValueObject
{
public string Word { get; private set; }
public Spam(string word)
{
Word = word;
}
}
基础设施项目中的服务:
public class SpamService(DatabaseContext databaseContext)
{
private readonly DatabaseContext _databaseContext = databaseContext;
public async Task<IEnumerable<string>> GetSpamWords()
{
return await _databaseContext.Spam
.Select(x => x.Word)
.ToListAsync();
}
}
我在命令处理程序中使用此服务来检查评论是否有效。
如果您的域模型不关心修改垃圾邮件列表中的条目,那么使用不可变惯用语处理该信息的内存表示是完全合理的。
也就是说,将整个“垃圾邮件字典”视为单个值对象可能更有意义,而不是尝试将每个单独的单词包装在其自己的实例中。
代码为我们工作,我们不为代码工作。 ——迈克“GeePaw”希尔。