2016-11-30 16 views
0

剣道スケジューラーには、発生する可能性のあるイベントのオプションがあります。剣道スケジューラーは更新メソッドを呼び出さないMVC 5

.Model(m => 
    { 
     m.Id(f => f.TaskID); 
     m.Field(f => f.Title).DefaultValue("No title"); 
     m.Field(f => f.OwnerID).DefaultValue(1); 
     m.Field(f => f.Title).DefaultValue("No title"); 
     m.RecurrenceId(f => f.RecurrenceID); 
    }) 
    .Read("Read", "Agenda") 
    .Create("Create", "Agenda") 
    .Destroy("Destroy", "Agenda") 
    .Update("Update", "Agenda") 
    .Filter(filters => 
    { 
     filters.Add(model => model.OwnerID).IsEqualTo(1).Or().IsEqualTo(2); 
    }) 

Readメソッドは、完全にデータベースからの私の結果をバック与え、私はスケジューラに新しいイベントを挿入しようとすると、それが表に新しい行を挿入Createメソッドのために呼び出します。

編集したい既存のイベントがある場合。イベントをダブルクリックして情報を変更し、[保存]を押します。

enter image description here

私はいくつかのブレークポイントを使用してコードをデバッグしようとしたが、更新が呼び出されることはありません。代わりに、createメソッドを再度呼び出します。

私はしかし、Createメソッドに以下を追加することができます

:それは今までに3つのイベントを追加した後よう作られた一つ一つの要求を追加し続けている「ヌル」に等しくなるようにIDのチェックがなければ

public virtual JsonResult Create([DataSourceRequest] DataSourceRequest request, EventModel task) 
    { 
     if (ModelState.IsValid) 
     { 
      if (task.ID == null) 
      { 
       // Create an event 
       AllQueries.InsertEvent(task); 
      } 
      else 
      { 
       AllQueries.UpdateEvent(task); 
      } 
     } 

     return Json(new[] { task }.ToDataSourceResult(request, ModelState)); 
    } 

実際には6つの新しいイベントが追加されます。

このチェックは新しいイベントを作成するために機能しますが、イベントを更新すると、IDが一致するまですべての既存のイベントをスキャンし、変更が見つかるとそれをスキャンします。これはスタート時には問題ありませんが、多くのイベントがスケジューラに追加されたときには問題になります。

どのようにして、スケジューラはcreateメソッドを呼び出す代わりに、更新メソッドを呼び出すようにしますか?

+0

IDがヌルでない場合、そのIDは更新権を意味しますか?他にも作成する..あなたのこのステートメントを取得しなかったのですが、イベントを更新するときには、IDが一致するまでイベントをスキャンし、見つかったときに変更されます。 –

+0

task.IDがnullそれはIDを持っています。スケジューラをデバッグし、ステップ1でステップ1に進むと、同じIDを持つものが見つかるまでそのデータベースの既存のイベントをすべてトラフし、その特定のイベントを更新します。 –

+0

それはあなたの 'Update'メソッドでも起こることでしょうか?右? –

答えて

0

IDは大文字でなければなりません。 IDと呼ばれる主キーをidに変更すると、すべて正常に動作します。

関連する問題