3

.NET MVC 4 を使用して Web サイトを構築しています。私が持っているのは、他の人物に関して役割を持つ人物です。たとえば、A は B、D の父であり、A は C の夫です。

これが正しい方法かどうかはわかりませんが、クラス Persons とクラス Roles を持つことを考えていました。どういうわけか、Persons のインスタンスを Roles のインスタンスを介して Persons の別のインスタンスに接続し、それをデータベースに保存したいと考えています。

したがって、関連付けテーブルには Person1|Role|Person2 の 3 つの列が必要です。

これをモデルで最もよく表現するにはどうすればよいですか?

編集

助けてくれてありがとう。私はあなたが提案したものとかなり似たようなことをしました。

public class Persons
{
    public Guid PersonsID { get; set; }
    public string Name { get; set; }
    ICollection<Relations> Relations { get; set; } 

}

public class RelationshipType
{
    public Guid ID {get; set;}
    public string Type { get; set; }
    public ICollection<Relations> Relations { get; set; }

}

public class Relations
{
    public Guid RelationsID { get; set; }
    public virtual Persons RealtedPerson { get; set; }
    public virtual RelationshipType RelationType { get; set; }
    public virtual Persons RealtedTo { get; set; }
}

これにより、Relations テーブルが Persons に対する 2 つの外部キーと RelationshipType に対する 1 つの外部キーを持つ 3 つのテーブルが得られました。いいえ、人を削除すると、この人を含む関係も削除される可能性があります。

最後の質問です。テーブルを生成するクラスではなく列挙型を選択したのはなぜですか?

ご協力いただきありがとうございます。

4

1 に答える 1

2

あなたはこのようなことをするべきです

class Person{
   string Id{ get; set; }
   string Name{ get; set; }
   ...
   List<Relation> relations{ get; set; }

}

class Relation
{
   string id{ get; set; }
   Person relatedPerson{ get; set; }
   RelationType relationType { get; set; }
   Person relatedto { get; set; }
}

enum RelationType{
  Husband,
  Father,
  Child,
  ...
}
于 2012-12-19T15:03:36.870 に答える