更新现有行mysql linq

时间:2015-09-15 08:38:27

标签: c# mysql asp.net-mvc linq

我有表格的html页面。当我更改字段时,我需要重新保存表中的现有记录。

public int SaveTask(TimesheetListModel task, int userId)
{
    var worklog = new tblWorkLog();

    if (task != null)
    {
        worklog.AccountId = userId;     
        worklog.WorkDate = task.Date;
        worklog.Note = task.Note;       
        worklog.TaskTitle = task.Task;

        DataContext.tblWorkLogs.InsertOnSubmit(worklog);

        DataContext.SubmitChanges(ConflictMode.FailOnFirstConflict);
    }

    return worklog.WorkItemId;
}

此函数将数据保存到表tblWorklogs并返回记录的id。但是当我更新记录时,我已经有了记录的id,我需要在表中找到这条记录并更新字段。这该怎么做?我写了开始功能:

public bool UpdateTask(TimesheetListModel task)
{
    /* If update succefull must return true */
    return false;
}

1 个答案:

答案 0 :(得分:3)

对您的实施不太确定,但根据上下文,您可以执行类似的操作。

public bool UpdateTask(TimesheetListModel task)
{
    var entity = DataContext.tblWorkLogs.FirstOrDefault(twl => twl.Id == task.Id);
    if (entity != null)
    {
      entity.AccountId = userId;     
      entity.WorkDate = task.Date;
      entity.Note = task.Note;       
      entity.TaskTitle = task.Task;
      DataContext.SubmitChanges();
      return true;
    }

    return false;
}

背后的逻辑是:

  • 尝试从数据库中检索实体。
  • 如果存在,请根据需要编辑属性/属性
  • 保存更改

这一切都取决于您是否在跟踪实体,否则您必须Attach该实体。