iT邦幫忙

0

Blazor Webassembly 自訂流水號編號,資料庫有成功寫入了但網頁卻沒顯示編號

  • 分享至 

  • xImage

這邊是我讀取和寫入的語法,產生流水號是寫在寫入的方法裡面

[HttpGet]
public async Task<IActionResult> GetRecord()
{
    var data = await _db.WorkovertimeRecordTable.ToListAsync();
    return Ok(data);
}

[HttpPost]
public async Task<IActionResult> Create([FromBody] WorkovertimeRecordDto data)
{
    int lastNumber = 0;
    string AutoCode = "";
    var GetmaxIdRecord = _db.WorkovertimeRecordTable.OrderByDescending(u => u.WorkovertimeId).FirstOrDefault();
    if (GetmaxIdRecord != null)
    {
        string headDate = GetmaxIdRecord.CreateTime.ToString();
        lastNumber = int.Parse(GetmaxIdRecord.WorkovertimeCode.Substring(12,4));
        if (headDate == DateTime.Now.ToString())
        {
            lastNumber++;
            AutoCode = "WOT" + DateTime.Now.ToString("yyyyMMdd") + String.Format("{0:0000}", Convert.ToInt16(lastNumber));
        }
    }
    else
    {
        AutoCode = "WOT" + DateTime.Now.ToString("yyyyMMdd") + String.Format("{0:0000}", 1);
    }
    var InserRecord = new WorkovertimeRecordTable
    {
        WorkovertimeCode = AutoCode,
        DepartmentName = data.DepartmentName,
        FilterName = data.FilterName,
        FactoryName = data.FactoryName,
        Applicant = data.Applicant,
        WoDate = data.WoDate,
        WoStartTime = data.WoStartTime,
        WoEndTime = data.WoEndTime,
        WoReason = data.WoReason,
        WoSum = data.WoSum,
        CreateTime = data.CreateTime
    };
    _db.WorkovertimeRecordTable.Add(InserRecord);
    await _db.SaveChangesAsync();
    return Ok(data);
}

在資料新增後資料庫的部分都是正常的,但網頁端就是show不出產生的編號
是因為這樣產生編號後,編號沒有回填到Shared裡面的資料表嗎?
如果是的話我該怎麼回填編號回去啊?
麻煩大家了~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
科科
iT邦研究生 1 級 ‧ 2022-03-24 17:02:21
最佳解答
_db.WorkovertimeRecordTable.Add(InserRecord);
await _db.SaveChangesAsync();
return Ok(data);

這邊下個中斷點Debug,
觀察物件裡面值的變化應該就能發現問題了吧。

看更多先前的回應...收起先前的回應...
皓皓 iT邦新手 3 級 ‧ 2022-03-25 08:57:00 檢舉

我找到問題點了!!
另外我可以請問一下,我這邊找出最後一筆資料的語法是哪裡有問題呢?
因為我抓出來的結果都是null

var GetmaxIdRecord = _db.WorkovertimeRecordTable.OrderByDescending(u => u.WorkovertimeId).FirstOrDefault();
科科 iT邦研究生 1 級 ‧ 2022-03-25 09:23:28 檢舉

確定有資料嗎?
沒資料的話 .FirstOrDefault(); 就會回傳null

不然就加 .ToList() 試試

var GetmaxIdRecord = _db.WorkovertimeRecordTable.OrderByDescending(u => u.WorkovertimeId).ToList().FirstOrDefault();
皓皓 iT邦新手 3 級 ‧ 2022-03-25 09:27:59 檢舉

有資料~ 因為下中斷點的時候有看到WorkovertimeRecordTable裡面是有資料的

皓皓 iT邦新手 3 級 ‧ 2022-03-25 09:43:22 檢舉

加上.ToList()就有東西了~
不過這是什麼原因啊!?

科科 iT邦研究生 1 級 ‧ 2022-03-25 10:14:53 檢舉

既然剛好遇到了這問題,你可以goolgle "Linq 延遲執行",
補充一下這方面的知識。

簡單來說就是 .ToList() 才是真正去執行撈資料的動作。

皓皓 iT邦新手 3 級 ‧ 2022-03-25 11:27:24 檢舉

好的 我再來惡補一下~
太感謝你了/images/emoticon/emoticon32.gif

0
天黑
iT邦研究生 5 級 ‧ 2022-03-24 15:06:01

簡單看了一下,目前寫入資料庫的變數是InserRecord,但是你回傳的是data就是一開始輸入的變數,所以不會變。

我要發表回答

立即登入回答