2016-09-23 7 views
0

誰かが同じ問題を抱えていれば、すでに解決策が見つかっているにもかかわらず、なぜエンティティフレームワークは変更されていないエンティティを更新するように見える

エンティティフレームワークは、ナビゲーションプロパティを使用して実際に変更されたエンティティにのみリンクされていたプロパティを更新するように見えました。

似たような例:3kgの砂糖を注文しましょう。この注文には、ID、金額、仮想商品(砂糖)を提供する製品ID、および仮想顧客を提供する顧客IDがあります。注文を保存しているうちに、顧客と製品はDBでも更新されていました。

「なぜナビゲーションプロパティが変更されたのか」、「変更されていない子エンティティも更新された理由」などの質問に対する回答を探していました。

+0

);

希望これは他の誰かが、すべての間違った場所でエラーを探して時間を無駄にしないために役立ちますあなたが保存/更新するのに使用したコードはあなたの問題を明らかにするでしょうか? – Wurd

答えて

0

徹底的なデバッグでは、実際の理由は私が同じコントローラアクションの異なるポイントでクラスを使用していることを示しました。たとえば、私は電子メールで注文に関する通知を送信したいと思いますこのように、やや探して、メールのためにそれに関連する情報を与えるDTO(データ転送オブジェクト)とのメールのアクションを呼び出す:実際の顧客エンティティはメールが必要のないことを多くの情報を持っているため

public class MailDTO { 
    public Order order { get; set; } 
    public Customer customer { get; set; } 
    public Product product { get; set; } 
} 

、私は、そのDTOに入れる関連情報だけで新しいCustomerオブジェクトを作成しました。それはどこに問題があったのですか?新しい顧客エンティティがフレームワークによって追跡されているので、savechanges(async)関数を呼び出すと、フレームワークはそれをDBに書き込もうとしました。 EFは、それがコンテキストで追跡エンティティは、おそらく含め `EntityState.Modified`に設定されている場合にのみ更新してしまう

関連する問題