私はこの問題でデータベースを構築するためにコードファーストアプローチを使用しています。 、いくつかのサンプルデータを使用してSQL Serverデータベースをチェックエンティティ間のEF複数の関係
public class Official {
public int OfficialID { get; set; }
public String Surname { get; set; }
public String FirstName { get; set; }
public int? TournamentID { get; set; }
public virtual Tournament Tournament { get; set; }
public virtual ICollection<Match> Matches { get; set; }
}
私はそれが期待されるので、これは動作します:公式のエンティティで
public class Tournament {
public int TournamentID { get; set; }
public String Name { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public int? SportID { get; set; }
public virtual Sport Sport { get; set; }
public virtual ICollection<Official> Officials { get; set; }
}
私はこれを持っている:私は、次の(部分)エンティティを持っています。トーナメントは関係者と1対多の関係を持っています。
私が問題になっているのは、トーナメントが役人のプライマリキーをヘッド役人として保持したいということです。だから私は、トーナメントエンティティに追加します。
public int? OfficialID { get; set; } // foreign key to official table
public virtual Official HeadOfficial { get; set; } // navigation property
私はこれを行う場合、私は私のトーナメント表に属性OfficialIDとHeadOfficial_OfficialIDを取得し、私は当局の表にTournamentID、Tournament_TournamentIDとTournament_TournamentID1を取得します。トーナメントとオフィシャルの間に1対多の関係があるだけでなく(トーナメントは多くの役人を持つことができます)、私は1対1の関係も持っています公式)。
この問題を解決するにはどうすればよいですか?
は、多くの先生を義務づけしかし、私はFluent APIの第2部分を理解していません。エンティティトーナメントには多くの役人(私はそれを理解しています)が、その後トーナメントWithOptionalトーナメントとHasForeignKeyトーナメントIDを持っていますか?なぜトーナメントはトーナメントIDを持っていますか? – Mekswoll
@pEkvo:最後の 'HasForeignKey'は、' Tournament'ではなく 'Official'エンティティのプロパティ式を取るので、' TournamentID'は 'Official'のFKです。ラムダパラメータでは、基本的に 't' =" Tournament "、" o' = "Official"です。 – Slauma
うん、それは今、非常にありがとう、それを理解しています。 – Mekswoll