次のように、クラスUserとProfileをマップしようとしています。
public class User
{
public long ID { get; set; }
public string LoginName { get; set; }
public Profile Profile { get; set; }
}
public class Profile
{
//the ID is the same with User's ID
public long ID { get; protected set; }
public string NickName { get; set; }
public Gender Gender { get; set; }
}
したがって、これらは1対1の関係とコンポーネントの関係の両方としてマッピングできます。そして、何人かの人々がコンポーネントを評価し、1対1は悪い習慣だと思うのを見つけました、なぜですか?パフォーマンス上の理由で?ただし、多くのシナリオ(asp.net2.0メンバーシップなど)では、2つの別個のテーブルとして設計されています。
どのように選ぶべきですか?どの側面を考慮する必要がありますか?コンポーネントは「値オブジェクト」を意味しますが、エンティティではないことを知っていますが、これはさらにいくつかのことを意味しますか?
ps:そして、私をさらに混乱させたのは、現実の世界では1対1の関係であっても、多対1を使用する必要があるという意見です。