プロジェクトのドメイン オブジェクトを設計するための最良の方法を知りたいです。
ドメイン オブジェクトは、ORM/フレームワーク、さらにはデータベース テクノロジ (MySQL、MSSQL、さらには Mongo) についても知らない必要があります。
そして、次の質問が頭に浮かびます。Post と Comment という 2 つのオブジェクトがあるとしましょう。
これは Post オブジェクトのコードです:
class Post {
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public IList<Comment> Comments { get; set; }
}
ここで、Comment オブジェクトに関する私の質問は、それが Post ID を含むべきか、それとも Post オブジェクトだけを含むべきかということです。
class Comment {
public int Id { get; set; }
public string Content { get; set; }
public Post Post { get; set; }
public int PostId { get; set; } // Should i include it?
}
リレーショナル オブジェクトまたはそのドメイン オブジェクトの Id を含めることは良い方法ですか?
もう 1 つの懸念は、mongodb のような SQL データベースがないことです。データを mongodb に保存した場合、Comment オブジェクトはどの Post オブジェクトを参照しますか? mongodb では、投稿とコメントの間に関係はありません。投稿にはコメントのリストが含まれますが、コメント自体は、それらが含まれる投稿を認識しません。これらのドメイン クラスを Sql ベースのデータベースと NoSql データベースの両方と互換性を持たせるにはどうすればよいでしょうか?
ありがとうございました