新しいエンティティを作成するときに、作成直後に外部キーフィールドの1つにアクセスしようとすると、オブジェクト参照例外が発生します。Entity Frameworkでエンティティを作成した後にForeignKeyフィールドにアクセスする
オブジェクト参照がオブジェクトインスタンスに設定されていません:
Call call = new Call() { .... StoreID = storeID, //foreign key of store .... } db.Calls.Add(call); db.SaveChanges(); .... // do something with store call.Store.Anything();
これは投げる - ここでは、コードです。
call.Store
は私がストアオブジェクトにアクセスしようとしていない場合、コードは完璧に動作する任意のオブジェクト
ノートにマップされていませんので。私がユーザーをリダイレクトし、コールがゼロからロードされた場合、Storeオブジェクトにアクセスすることは問題ありません。私は
db.Entry(call).Reload();
を試してみました厄介なハックとして
それでも、私は作成時にストアオブジェクトがすぐにアクセスできるようにするにはどうすればよい
を助けていませんか?
モデル:
[Table("CALL_LOG")]
public class Call
{
.....
[Column("STORE_IID"), Required]
public int StoreID { get; set; }
[ForeignKey("StoreID")]
public virtual Store Store { get; set; }
.....
}
まだ親を確立していない場合は、子レコードの親レコードがnullになることがあります。保存する前に、コールの親になるStoreレコードと同じStoreプロパティを設定する必要があります。外部キーフィールドを外部設定する何かがある場合、再読み込みすると良いことがあります。データベースをチェックして、レコードのStoreIDが新しいレコードのCALL_LOGのNULL以外の値に設定されているかどうかを確認しましたか? – JamieSee
@JamieSee彼はCallオブジェクトを作成するときにStoreIDを設定しています。それは挿入されますが、オブジェクトはコンテキストにロードされていません。 – Dismissile