EFを使い始めたばかりで、いわば最初のハードルに落ち込んでいます。
私は2つのクラスを持っています:
public class Hero
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class League
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Hero> Team { get; set; }
}
今、私のコードには、2つのリーグのメンバーであるヒーローがいるのを止めるものは何もありません。
League A = new League() { Name = "A Team" };
League B = new League() { Name = "B Team" };
Hero me = new Hero() { Name = "Richard" };
A.Team = new List<Hero>();
A.Team.Add(me);
B.Team = new List<Hero>();
B.Team.Add(me);
ただし、パッケージマネージャーから「Update-Database」を実行すると、ヒーローの外部キーを使用してDBが生成されます。つまり、ヒーローは1つのリーグのメンバーにしかなれません。
PSEUDO:
TABLE HERO == ID,NAME,LEAGUE_ID
TABLE LEAGUE = NAME,ID
ヒーローは1リーグのメンバーにしかなれなくなったため、これによりクラスが正しく機能しなくなりました... EFにこれを取得するにはどうすればよいですか?必要なのは多対多の関係だと思いますが、それは構築ではありません。