這邊是我讀取和寫入的語法,產生流水號是寫在寫入的方法裡面
[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裡面的資料表嗎?
如果是的話我該怎麼回填編號回去啊?
麻煩大家了~
_db.WorkovertimeRecordTable.Add(InserRecord);
await _db.SaveChangesAsync();
return Ok(data);
這邊下個中斷點Debug,
觀察物件裡面值的變化應該就能發現問題了吧。
我找到問題點了!!
另外我可以請問一下,我這邊找出最後一筆資料的語法是哪裡有問題呢?
因為我抓出來的結果都是null
var GetmaxIdRecord = _db.WorkovertimeRecordTable.OrderByDescending(u => u.WorkovertimeId).FirstOrDefault();
確定有資料嗎?
沒資料的話 .FirstOrDefault(); 就會回傳null
不然就加 .ToList() 試試
var GetmaxIdRecord = _db.WorkovertimeRecordTable.OrderByDescending(u => u.WorkovertimeId).ToList().FirstOrDefault();
有資料~ 因為下中斷點的時候有看到WorkovertimeRecordTable裡面是有資料的
簡單看了一下,目前寫入資料庫的變數是InserRecord,但是你回傳的是data就是一開始輸入的變數,所以不會變。