1

Game という名前のエンティティがあります。このエンティティには、サブチーム タイプの 2 つのプロパティがあります。サブチームにはチーム タイプのプロパティがあります (サブチームの親チームです)。

ここで、サブチームとゲームを作成し、それを親チームとは関係なくデータベースに保存します (作成時にサブチームがどのチームに属するかわかりません)。

後で、このコードを使用してEFを介してゲームをロードします..

        return contex.Games
            .Include(t => t.Serie)
            .Include(t => t.AwayTeam)
            .Include(t => t.HomeTeam)
            .SingleOrDefault(g => g.Identifier == gameIdentifier);

それはうまく機能し、ゲームとサブチームを取得します...しかし、HomeTeam.ParentTeam != null かどうかを確認して、サブチームに ParentTeam があるかどうかを確認したいことを知っています。そして、ここに何か奇妙なことがあります..

HomeTeam.ParentTeam IS NULL であることがわかります。これを実行しようとすると、HomeTeam.ParentTeam.Identifier 例外が発生します。しかし、if ステートメント (HomeTeam.ParentTeam != null) を実行すると、True が返されますが、それは true ではありません HomeTeam.ParentTeam is NULL

VS2011 の直接のウィンドウでいくつかの行を実行しました。詳細情報を取得するには、次の結果を得ました。

homeTeam.ParentTeam
null
homeTeam.Users
null
(homeTeam.ParentTeam == null ? "True" : "False")
"False"
(homeTeam.Users == null ? "True" : "False")
"True"

hometeam.ParentTeam が NULL であると言うのはどうしてですか。それを使用しようとすると例外が発生しますが、IF ステートメントは、homeTeam.ParentTeam が NULL ではないことを教えてくれます。

EF はここで何をしているのですか? また、EF のオブジェクトが実際に NULL である場合に NULL であるかどうかを確認するにはどうすればよいですか。

エンティティで仮想を使用していないため、プロキシの問題ではありません。

4

0 に答える 0