2016-11-30 65 views
0

kendo調度程序對可能發生的事件有一些選項。Kendo調度程序從不調用更新方法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方法還給從數據庫中我的成績很好,當我嘗試插入一個新的事件來調度它要求創建方法,插入新行的表。

如果有我想要編輯的現有事件。我雙擊事件,更改它的信息並按保存。

enter image description here

我試圖調試一些斷點的代碼,但更新不會被調用。相反,它會再次調用create方法。

我可以然而添加以下創建方法:

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)); 
    } 

未經檢查的ID等於「空」,它不斷增加做過這樣每一個請求增加3個事件後,實際上增加了6個新事件。

此檢查適用於創造新的事件,但是當我更新的事件,它會掃描所有低谷事件exisitng直到的ID相匹配,當它發現它得到改變。這在開始時是沒有問題的,但是當大量事件被添加到調度器時,它就成爲了一個問題。

如何讓調度程序調用Update方法而不是調用create方法?

+0

但是,如果ID不爲空,這意味着它的更新權?否則創建..我沒有得到你的這條語句'但是當我更新事件時,它會掃描所有存在的事件,直到id匹配,並且當它被發現時它會被改變。' –

+0

如果task.ID不等於null,它意味着它有一個ID。當我調試調度器並通過步驟1時,它會遍歷數據庫中的所有現有事件直到它找到具有相同ID的那個事件,然後更新該特定事件。 –

+0

但即使在你的'Update'方法中也會發生什麼?對? –

回答

0

該ID必須是非資本。一旦你改變主鍵ID爲ID一切工作正常。