こんにちは、大丈夫、ここにシナリオです:HasLoadedOrAssignedValueプロパティがtrueに設定されているのはなぜですか?
VS 2008 .NET 3.5 SP1、LINQ to SQL。
私はImage Entityを持つプロダクトエンティティを持っています。そのためImage Entityとの関係があります。これはすべてスキーマとDBMLで定義されています。
ImageIDを付けずに新しいProductエンティティを作成してDBに保存するとします。この時点で、Entityの_ImageフィールドにはHasLoadedOrAssignedValueがfalseに設定されています。
ImageIDを持たないDBからそのエンティティを取得すると、ImageIDはnullに設定され、Image Entityもnullに設定され、HasLoadedOrAssignedValueはtrueに設定されます。なぜ??
ImageIDプロパティを有効なintに設定しようとすると、ForeignKeyReferenceAlreadyHasValueException例外が発生します。
今、私は、「ああ、あなたは関係プロパティ自体を設定しなければならないので、Product.Image = someImageではなくProduct.ImageID = 2」ということを知っていますが、私は常にIDフィールドを設定します。いつもほとんど常に、よく....だから、
動作しますが、私の質問は2つあり:
- は、なぜそれがない
- もっと重要なのは、なぜ私はこれを経験していなければならないときにtrueに設定HasLoadedOrAssignedValueですインコヒーレントな動作。私はエンティティプロパティを直接設定する必要はないことを知っています。なぜ今はこのプロパティが機能していませんか?これがLINQ to SQLルールの場合、なぜルールが壊れることがありますか?
歓声!
質問: 明示的にIDをnullに設定していますか、設定していませんか? ImageIDは画像のPKであり、ヌル値ではありませんか? イメージオブジェクトを設定しても機能しますか?私はそれがあなたがしたいことではないことを知っていますが、その作業が潜在的な原因のリストを絞り込むかどうかを判断します。 1&2は詳細を知らなくても答えにくいです。 –