2

これが私がやりたいことです:

var myCustomer = new Customer();
myCustomer.Name = "Bob";
myCustomer.HasAJob = true;
myCustomer.LikesPonies = false;

次に、それを更新メソッドに渡したいと思います:

public UpdateCustomer(Customer cust)
{
  using(var context = dbcontext())
  {
     var dbCust = context.Customers.FirstOrDefault(c => c.Name == cust.Name);
     if(dbCust != null)
     {
        // Apply values from cust here so I don't have to do this:
        dbCust.HasAJob = cust.HasAJob;
        dbCust.LikesPonies = cust.LikesPonies
     }
     context.SaveChanges();
  }
}

この理由は、アプリケーションの複数の異なる部分で、および/または複数の DLL で作業しているためです。これは可能ですか?

編集: この質問が非常に役立つことがわかりました: 行が存在する場合は更新する そうでない場合は、Entity Framework でロジックを挿入します

4

1 に答える 1

1

エンティティがデータベースにあり、キーを持っていることが確実な場合は、持っているオブジェクトをコンテキストにアタッチするだけです。プロパティのすべての値がデータベースと同じであることが前提であるため、添付されたエンティティはデフォルトで Unchanged 状態であることに注意してください。そうでない場合 (つまり、値が異なる場合)、エンティティの状態を変更済みに変更する必要があります。このブログ投稿をご覧ください: http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part-4-add-attach- and-entity-states.aspxは、あなたが求めているものを含むいくつかのシナリオについて説明しています。

于 2012-11-28T23:29:46.877 に答える