エンティティフレームワークマルチテーブル多対多
-
12-12-2019 - |
質問
私はEF4.1コードを最初に取り組んでいて、テーブルがリンクされる必要がある多くの多対数の関係テーブルを作成しようとしています。コードベロウの小さなスニペットを見てください:
class Event
{
int EventId { get; set; }
ICollection<Contact> Contacts { get; set; }
}
class Contact
{
int ContactId { get; set; }
ICollection<Relation> Relations { get; set; }
}
class Relation
{
int RelationId { get; set; }
string Name { get; set; }
}
.
だからコンタクトオブジェクトは、「母」、「父」、「兄弟」などのさまざまな種類の関係を持つことができます。
私は連絡先が参加した場所にあるいくつかのイベントを追跡する必要がありますが、イベントを主催する人とどのように関連するかを知りたいです。たとえば、彼はイベントの兄弟、父、夫でしたか?別のイベントでは、同じ人が現れることができましたが、イベントの兄弟兄弟になりましょう。
連絡先のイベントは多対多です。接触との関係は1対多です。
SQLでは、リンクテーブルを作成し、3つのプロパティIDすべてを有しています(eventID、constactid、ellyid)。ただし、最初にコードでは、あなたはこの関係をどのように表現しますか?
解決
データベースと同じデータベース内のマッピングテーブルのような接続エンティティを作成する必要があります。
class Event
{
int EventId { get; set; }
ICollection<ContactEvent> ContactEvents { get; set; }
}
class ContactEvent
{
int EventId {get;set;}
int ContactId {get;set;}
public virtual Event Event {get; set;}
public virtual Contact Contact {get;set;}
}
class Contact
{
int ContactId { get; set; }
ICollection<ContactEvent> ContactEvents { get; set; }
ICollection<Relation> Relations { get; set; }
}
class Relation
{
int RelationId { get; set; }
string Name { get; set; }
public virtual Contact Contact {get; set}
}
. 所属していません StackOverflow