2

したがって、私のドメインには次のようなモデルがあります。

public class Product
{
    public virtual Tag Methodology { get; set; }
}

次に、Webフォームプロジェクトで次のように更新します。

if (!string.IsNullOrWhiteSpace(ddlMethodology.SelectedValue))
    product.Methodology = TagRepo.GetTagById(int.Parse(ddlMethodology.SelectedValue));
else
    product.Methodology = null;

しかし、product.Methodology以前にオブジェクトに設定されていたとき、これは更新されていなかったので、何も戻さないように戻したかったのです。つまり、product.Methodology = null;回線が期待どおりに機能していないようです。

デバッガーで実行したところ、機能する場合と機能しない場合がありました。少し髪を引っ張った後、エンティティフレームワークが実行時にそのプロパティ用に作成していたプロキシタイプが原因であり、デバッガーで検査したときに機能していたことに気付きました。

そこで、この問題を修正するために、このハックを作成しました。これはうまく機能します:(注:現在はelse if

if (!string.IsNullOrWhiteSpace(ddlMethodology.SelectedValue))
    product.Methodology = TagRepo.GetTagById(int.Parse(ddlMethodology.SelectedValue));
else if (product.Methodology != null)
    product.Methodology = null;

だから私の質問は次のとおりだと思います:

  • 私は何か間違ったことをしていますか?
  • 毎回ハックすることを覚えてそれを行うことができる別の方法はありますか?
  • エンティティフレームワークコードの最初のCTPのバグと見なすことができますか?

乾杯、
チャールズ

4

0 に答える 0