2017-02-01 4 views
0

私はエンティティデータモデルを介して接続されているデータベースを使用していますが、DBコンテキストを使用してエンティティを作成および更新しています。エンティティframewokでDBcontextを使用してエンティティを更新していません

My Createメソッド(下)が正常に動作しています。

[HttpPost] 
public IHttpActionResult PostCustomer([FromBody] Customer Customer) 
{ 
    if (!ModelState.IsValid) 
    { 
     return BadRequest(ModelState); 
    } 
    using (var dbCtx = new CustomerDBEntities()) 
    { 
     dbCtx.Customers.Add(Customer); 
     dbCtx.SaveChanges(); 

    } 
    return CreatedAtRoute("DefaultApi", new { id = Customer.id }, Customer); 
} 

しかし、私の更新方法は何もしていません。私は間違いや何も起こっていない何かを得ることはありません。値を更新していません。 私はSQLコマンドを使用していた場合はそれがうまく働いていたデータベースに直接行くが、私はそれを変更して以来、それが動作を停止する前に、コードはこの

[HttpPut] 
public IHttpActionResult UpdateCustomer([FromBody] Customer Customer) 
{ 
    if (!ModelState.IsValid) 
    { 
     return BadRequest(ModelState); 
    } 
    Customer cust; 
    var ctx = new CustomerDBEntities(); 
    cust = ctx.Customers.Where(s => s.id == Customer.id).FirstOrDefault<Customer>(); 
    if (cust != null) 
    { 
     cust.Customer_Name = Customer.Customer_Name; 
     cust.email = Customer.email; 
     cust.Customer_address = Customer.Customer_address; 

    } 

    ctx.Entry(cust).State = System.Data.EntityState.Modified; 
    ctx.SaveChanges(); 


    return CreatedAtRoute("DefaultApi", new { id = Customer.id }, Customer); 
} 

です。

ご協力いただければ幸いです。

+0

if(cust!= null)< - これがnullではないことを確かめますか? – Daniel

+0

[Entity Framework 6を​​使用してレコードを更新するにはどうすればいいですか?](http://stackoverflow.com/questions/25894587/how-to-update-record-using-entity-framework-6) –

+0

エンティティが同じコンテキスト内でフェッチされているときにエンティティ状態を手動で設定します( 'ctx.Entry(cust).State = System.Data.EntityState.Modified;')。ただし、状態を設定しても影響はありません。 try catchを入れ、エラーがないことを確認します。また、パフォーマンス上の理由から、 'ctx.Customers.Find(Customer.id)'のようなエンティティを 'Where'と' FirstOrDefault'の代わりに使うことができます。 – Developer

答えて

1

答えのコード行を削除するプロパティレベルでの変更を追加します。

ctx.Entry(cust).State = System.Data.EntityState.Modified; 

EFは、コンテキスト内のエンティティに対する変更を追跡しますが、変更されたことを伝える必要はありません。

+0

こんにちは、私のために働いてくれてありがとう、しかし、今私は、すべてのフィールドが変更されたとき、または電子メールフィールドが変更されたときに動作する別の問題を抱えているが、電子メールが変更されていないときにも名前またはアドレスが変更されていないまだ動作しているメールフィールドのみが問題になっています –

+0

既存のものを編集してすべてのコメントと答えをコンテキスト外で表示するのではなく、新しい質問をする必要があります。 –

関連する問題