1

ナビゲーションプロパティが読み込まれないという問題があります。他のすべてのエンティティと同じ設定をしていますが、これは、トリガーによって処理される、自然なFK(数値)ではなくカスケードしないプロパティを使用しています。

Expression<Func<DivisionBracketGameParticipant, object>>[] includes2 = {
                                                                                       q => q.DivisionWinnerBracketGame,
                                                                                       q => q.DivisionLoserBracketGame
                                                                                   };
            var test = _divisionBracketGameParticipantsRepository.GetMany(includes2,
                                                                      q =>
                                                                      q.DivisionBracketGame.DivisionBracket.Division.
                                                                          EventId == eventId);

データベーススキーマ

DivisionBracketGame

Id
Number

DivisionBracketGameParticipant

Id
DivisionBracketGameId -> Id
DivisionBracketGameWinnerNumber -> Number
DivisionBracketGameLoserNumber -> Number

エンティティ

[Table("DivisionBracketGame", Schema = "GrassrootsHoops")]
    public class DivisionBracketGame : BaseEntity
    {
        public int Id{ get; set; }
        public int Number { get; set; }

        [InverseProperty("DivisionBracketGame")]
        public virtual ICollection<DivisionBracketGameParticipant> DivisionBracketGameParticipants { get; set; }

        [InverseProperty("DivisionWinnerBracketGame")]
        public virtual ICollection<DivisionBracketGameParticipant> DivisionWinnerBracketGameParticipants { get; set; }

        [InverseProperty("DivisionLoserBracketGame")]
        public virtual ICollection<DivisionBracketGameParticipant> DivisionLoserBracketGameParticipants { get; set; }
    }

[Table("DivisionBracketGameParticipant", Schema = "GrassrootsHoops")]
public class DivisionBracketGameParticipant : BaseEntity
    {
        public int Id{ get; set; }
        public virtual int DivisionBracketGameId { get; set; }
        public virtual int? DivisionWinnerBracketGameNumber { get; set; }
        public virtual int? DivisionLoserBracketGameNumber { get; set; }

        [ForeignKey("DivisionBracketGameId")]
        public virtual DivisionBracketGame DivisionBracketGame { get; set; }

        [ForeignKey("DivisionWinnerBracketGameNumber")]
        public virtual DivisionBracketGame DivisionWinnerBracketGame { get; set; }

        [ForeignKey("DivisionLoserBracketGameNumber")]
        public virtual DivisionBracketGame DivisionLoserBracketGame { get; set; }
    }
4

1 に答える 1

0

Number主キーではないため、EFは関係を作成しません。主キーはあなたのDivisionBracketGameものなIdので、 と の両方DivisionWinnerBracketGameDivisionLoserBracketGameターゲットにしていますId(not Number)。

一対多の関係では、プリンシパル テーブルの列が一意であることが要求されます。この場合、列はNumber. これは、プリンシパル テーブルの主キーを使用するか、その列で一意のインデックスを使用することにより、データベースで可能です。EF は一意のインデックス/候補キーをサポートしていないため、EF で一対多の関係を構築する唯一の方法は、プリンシパル テーブルの主キーを使用することです。

FK 値は関連する値を取得するために使用されるため、現時点では、間違った列を使用しているため、間違った値を持つレコードを探している可能性があります。

于 2012-07-10T08:48:41.650 に答える