投稿した後、モデル(EF4)のナビゲーションプロパティをnullにしない方法がわかりません。私はいくつかの基本的なページで同じ問題を抱えています。
つまり、LoginIDの外部キー(Loginテーブルから)を使用したテーブルEstimateがあります。
HTTPGet Editメソッドで、必要な特定の見積もりを見つけます。
Estimate estimate = db.Estimates.Find(id)
ここから、Loginナビゲーションプロパティと、Loginテーブルからそのレコードの任意のプロパティにアクセスできます。
強く型付けされたビューのモデルとして、この見積もりを渡します。HTTPPost Editメソッドが呼び出されると(そしてモデルがパラメーターとして渡されると)、Loginナビゲーションプロパティがnullになり、その中の何にもアクセスできなくなります。もちろん、見積もりクラスにLoginIDフィールドがあるので、それを回避することはできますが、それは本当に不格好で、エンティティフレームワークの主な利点を逃しているように感じます。
複数のページで同じ問題が発生し、ナビゲーションプロパティを持つモデルをビューに渡し、ビューがnullナビゲーションプロパティを持つモデルを返します。
以下は、私が問題を抱えていたコードの例です。
[HttpPost]
public ActionResult Edit(Estimate estimate)
{
var test = estimate.Login.CompanyProfileID;
...
Model.Loginとそのすべてのプロパティにビューで問題なくアクセスできるので、ビューに適切に渡されていることがわかります。フォームが送信されたときに、ナビゲーションプロパティがコントローラーに戻されないだけです。