私はカスタムHTMLヘルパーでデータベースを使用して、ビューでフォームを使用せずにajaxを使ってチェックボックスの状態を取得しています。 - > ID、状態(trueまたはfalse)、名前(チェックボックスの名前) ASP.NETとSQL Server:更新はしませんが、追加/挿入します
- Tbl_1:私は2つのテーブルを持っています
私は挿入操作を行うときに問題なく動作しますが、GUIDも取得するため、ログインしたユーザーに基づいてテーブルが追加/挿入されます。
マイコントローラ:
public ActionResult SetState(checkboxstate cbstate) { var UserId = new Guid(System.Security.Claims.ClaimsPrincipal.Current.FindFirst("sub").Value); var ent = new StartopDatabaseEntities(); var cbs = ent.checkboxstates.Where(w => w.Name == "World").FirstOrDefault(); if (cbs == null) // when there are no records in the database { ent.checkboxstates.Add(cbstate); ent.checkboxstateUpdates.SingleOrDefault(c => c.Id == cbstate.Id); var cbsOp = new checkboxstateUpdates(); cbsOp.timestamp = DateTime.Now; cbsOp.user_guid = UserId; cbstate.checkboxstateUpdates.Add(cbsOp); ent.SaveChanges(); } // record in database, update (I've only one user now, so has to update only this one) else { var cbsOp = new checkboxstateUpdates(); // declare in global var chc = new checkboxstate(); // to be declared in global var newCbs = ent.checkboxstateUpdates.Include(c => c.checkboxstate).ToList(); foreach (var u in newCbs) { if(u.user_guid==UserId && u.CheckboxStateId == u.checkboxstate.Id) { chc.state = cbstate.state; chc.name = cbstate.name; ent.checkboxstates.Add(chc); cbsOp.Tidspunkt = DateTime.Now; cbsOp.OpdateretAfBruger = UserId; ent.checkboxstateUpdates.Add(cbsOp); ent.SaveChanges(); } } }
誰が、なぜそれが新しいID(主キー)と同じデータを挿入/更新が、追加ではないですしてください説明できますか?私は、Ajaxがチェックボックスの状態と名前を持つコントローラへの呼び出しを送信する簡単なビューを持っています。私も
も私がもしブロックのロジックに明確ではないです..あなたが達成したいロジックのコードを書いていない任意の助け
'else'ブロックは更新とされていますか?あなたは何も更新しておらず、新しいレコードを作成し、 '.Add()'を呼び出してそれらをデータに追加しています。 – David
エラーはどうなりますか?それはデータベースの例外ですか?エラーを提供し、トレースをスタックして答えを出す必要があります。 – Dhanuka777
はいDavid以外、更新用です。どうすればいいのか教えてください。 –