我认为您的意思是 DDD 而不是 TDD,因为您所说的在 TDD 的上下文中意义不大。
您需要坐下来思考文件对您的系统意味着什么,是否有任何规则可以连接文件和帖子。例如,如果我们删除一个帖子,文件应该有什么?我们也删除它们吗?我们可以将相同的文件“添加”到多个帖子中吗?您坐下来,思考并收集有关您文件的知识,然后决定它是否值得在您的域中引入。
我可以想象的一些示例域:
public class Post
{
private List<File> _files;
public IEnumerable<File> AssociatedFiles {get {return _files;}}
public void AssociateFile(File file){//...}
public void DisassociateFile(File file ){//...}
//It doesn't delete it just do some logic. Maybe we can't delete this post and need to throw exception or whatever logic you need
public void Delete()
{
foreach (File file in AssociatedFiles) DisassociateFile(file);
}
}
public class File
{
public String Url;
public DateTime Created;
public DateTime Modified;
}
public class PostRepository
{
public void Delete(Post post)
{
post.Delete();
DbContext<Post>.Delete(post); //I Don't remember EF syntax for this
DbContext.SaveChanges();
}
}
更新:让我们继续...
在对您的领域进行了 5 分钟的思考后,我发现我的初始设计遗漏了重要的概念(与 DDD 一样,您会一点一点地刮取知识)。
谁负责上传文件?用户可以将他已经上传的文件关联到 Post,他可以添加新的文件(未上传的)文件来发布吗?他能把这些东西混在一起吗?这些都是重要的问题,你需要再次考虑它并设计你的系统。