以下の記事に沿って入門してみた。
何分あまり内容を判らずに試しているものだからつまらないところで大いに嵌った。
サンプルをまねて実行してみたところ、1度目は良いのだが、再実行するとなぜかエラーになる。
itemオブジェクトからmember型のリレーションを辿ってNameプロパティの参照でエラーになっている。
どうやらMemberがNullの様だ。
Memberのインスタンスは特に自分で作っているわけではなく、Entity Frameworkが遅延ロード機能で勝手にロードしてくれるはず・・・、なのだが。
1度目はうまくいくという事は文法的には悪くないようなきがするし・・・。
あれやこれやで丸1日近くも奮闘する羽目に。
結果からいうと、Entityクラス(item,member)のアクセスレベルにpublicを付け忘れたのが原因のようだ。
これを付けると問題なく動作した。
初回実行時は自分でitemとmemberを1件ずつ作り、挿入した後に中身をリストしているのでEntity Frameworkがmemberを新たにロードする必要が無いのでうまく行っているのだろうか。
(2回目は、さっき追加した1件目をロードできずにNullになっているのかも)
それにしても、itemの方は問題なく参照できているのだから、memberだけinternalだと参照できないというのも今ひとつ納得いかない。
itemは自分でロード、memberはEntityFrameworkがロードしてることになるんだろうか。
だったら、memberだけpublicにすりゃうまくいく?と思いきやそれではうまくいかない・・・。
今ひとつよく判らないなぁ。
参照できないならできないでそのタイミングでエラーになっても良い気もするし・・・。
無駄な1日を過ごしたの巻・・・。
0 件のコメント:
コメントを投稿