это мой класс,
public class PatReg
{
[DatabaseGenerated(DatabaseGeneratedOption.Computed), ScaffoldColumn(false)]
public Int64 RecId { get; set; }
[Key,Display(Name = "File Id"), ScaffoldColumn(true), DatabaseGenerated(DatabaseGeneratedOption.None )]
public Int64 FileId { get; set; }
[Required, Display(Name = "First Name")]
public string FName { get; set; }
[Required, Display(Name = "Middle Name")]
public string MName { get; set; }
[Required, Display(Name = "Last Name")]
public string LName { get; set; }
[Required, Display(Name = "Date of Birth"), DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime Dob { get; set; }
}
«FileId» — это мой первичный ключ, и я хочу сгенерировать его при сохранении записи, сохранив его вместе с записью,
Пользовательский номер будет иметь следующую спецификацию: ГГММДД0001, где ГГ — две цифры года, ММ — две цифры месяца. DD — две цифры дня, 001 — серийный запуск и сброс каждый день.
это мой контроллер
// POST: PatReg/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("FileId,FName,MName,LName,Dob")] PatReg patReg)
{
if (ModelState.IsValid)
{
_context.Add(patReg);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(patReg);
}
Фон
Раньше я генерировал этот номер с помощью хранимой процедуры SQL, как показано ниже,
Set @YY = (RIGHT(CONVERT(VARCHAR(8), GETDATE(), 1),2))
Set @MM = SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2)
Set @DD = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)
Set @SRL = (SELECT FileNumSrl FROM SetTblSrls WHERE RecID = 1)
SET @FileId =(select CAST(CONCAT ( @YY , @MM , @DD,00 ,@SRL) AS int))
«@SRL» представляет собой последовательную последовательность, которую я ищу из «SetTblSrls», и у меня был триггер в целевой таблице для обновления этого числа при каждой вставке, с помощью которого я получаю новый номер каждый раз, когда я генерирую FileId
Как я могу это сделать с помощью EF и C#,
HasDefaultValueSql
stackoverflow.com/questions/42036291/ - person Andrés Robinet   schedule 03.08.2017