2016-08-08 5 views
0

Entity Frameworkでオブジェクトを更新することはできますか?EF6を選択せず​​にオブジェクトを更新するMySQL

例:ここでは、主キーを提供してオブジェクトの位置を特定し、取得してから更新します。オブジェクトを最初に取得する必要がなくなり、単純にUPDATEクエリを実行したいと思います。生成されるSELECTクエリの必要性を排除します。

public async Task<int> UpdateChecks(long? acctId, string payorname, string checkaccountnumber, string checkroutingnumber, string checkaccounttype) 
    { 
     using (var max = new Max(_max.ConnectionString)) 
     { 
      var payments = await 
       max.payments.Where(
        w => 
         w.maindatabaseid == acctId && (w.paymentstatus == "PENDING" || w.paymentstatus == "HOLD")).ToListAsync(); 

      payments.AsParallel().ForAll(payment => 
      { 
       payment.payorname = payorname; 
       payment.checkaccountnumber = checkaccountnumber; 
       payment.checkroutingnumber = checkroutingnumber; 
       payment.checkaccounttype = checkaccounttype; 
       payment.paymentmethod = "CHECK"; 
       payment.paymentstatus = "HOLD"; 
      }); 

      await max.SaveChangesAsync(); 
      return payments.Count; 
     } 
    } 
+0

サードパーティ製のライブラリを使用しなければ、それは可能ではないと思います。 – sstan

+0

[Entity Framework Extended Library](https://github.com/loresoft/EntityFramework.Extended)をご覧ください。彼らのページによれば、それはあなたが探しているものとまったく同じです。しかし、私はEF6の最新バージョンで自分自身を試したことはありませんので、どのくらいうまく動作するかわかりません。 – sstan

+0

Duplicate:http://stackoverflow.com/questions/4218566/update-a-record-without-first-querying –

答えて

0

あなたはすでに存在している知っている実体を添付して、適切な更新メソッドを呼び出しますでしょうSaveChanges()を呼び出すためにAttach()コマンドを使用することができます。被験者に

:これはない、任意の特定のデータベースの実装に関連する一般的なEF論理であること

var existingBlog = new Blog { BlogId = 1, Name = "ADO.NET Blog" }; 

using (var context = new BloggingContext()) 
{ 
    context.Entry(existingBlog).State = EntityState.Unchanged; 

    // Do some more work... 

    context.SaveChanges(); 
} 

注ここで話題にMSDN articleからいくつかのサンプルコードです。

+0

mockオブジェクトの主キーのようなものを提供し、特定のフィールド値を設定し、そのフィールド値のみを更新することは可能ですか? –

+0

@AdamReedこれは一般的ですが、ここで概説したように、ロジックの一部をオーバーライドし、それらのプロパティのエンティティの状態を変更する必要があります。http://codereview.stackexchange.com/questions/37304/update-only-modified-fields- in-entity-frameworkしかし、コメントに記載されているように、これらの特定のフィールドだけを変更する理由がない限り、心配する必要はありません。 –

+0

私が扱っているデータベースは200以上のフィールドを持っています(残念ながら)、私は常にフィールドを1つだけ更新する必要があります。オブジェクトの主キーのみをオブジェクトに提供すると、単一のフィールドを追加して更新し、そのフィールドの状態を設定すると、その特定のフィールドのみが更新されます。あるいは、他のすべてのフィールドを変更しないで設定する必要がありますか? –

関連する問題