あなたが言ったことはTDDの文脈ではほとんど意味がないので、TDDではなくDDDを意味していると思います。
あなたは座って、ファイルがあなたのシステムにとって何を意味するのかを考える必要があります、ファイルと投稿を接続するルールはありますか?たとえば、投稿を削除した場合、ファイルには何が必要ですか?それらも削除しますか?同じファイルを複数の投稿に「追加」できますか?あなたは座って、考え、そしてあなたのファイルについての知識を集め、そしてあなたはそれがあなたのドメインで紹介される場所に値するかどうかを決定します。
私が想像できるいくつかのサンプルドメイン:
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の場合はいつものように、知識を少しずつ削っていきます)。
ファイルのアップロードは誰が担当しますか?ユーザーは、すでにアップロードしたファイルを投稿に関連付けることができますか?新しいファイル(アップロードされていない)ファイルを投稿に追加できますか?彼はこれを混ぜることができますか?これらは重要な質問です。ここでも、それについて考え、システムを設計する必要があります。