Я создаю свой первый проект, используя ASP. NET Core 3.0, используя EF Core. При создании пользователя (пациента) я хочу, чтобы они могли вводить свои имя и фамилию отдельно в представлении создания, они будут сохранены в моей базе данных в столбцах FirstName и LastName соответственно. Однако я хочу, чтобы оба эти поля были объединены и сохранены в другом столбце с именем FullName, чтобы я мог использовать его для поиска пользователей. Есть ли прямой способ сделать это?
Я пытался использовать приведенный ниже код, но получаю необработанное исключение -
"SqlException: Невозможно вставить значение NULL в столбец« FullName », таблица« WebPMR ». dbo.Patient '; столбец не допускает нулевые значения. INSERT завершается неудачно. Оператор завершен "
Модель:
public class Patient
{
public int Id { get; set; }
[Display(Name = "Title")]
public int TitleId { get; set; }
[Required]
[Display(Name = "First Name")]
[StringLength(25, MinimumLength = 1, ErrorMessage = "First Name must be 1-25 characters long")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
[StringLength(50, MinimumLength = 1, ErrorMessage = "Last Name must be 1-50 characters long")]
public string LastName { get; set; }
private string _fullName;
public string FullName
{
get => _fullName;
set => _fullName = FirstName + " " + LastName;
}
}
Контроллер :
// GET: Create
public IActionResult Create()
{
return View();
}
// POST: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("Id,FirstName,LastName")] Patient patient)
{
if (ModelState.IsValid)
{
_context.Add(patient);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["TitleId"] = new SelectList(_context.Title, "Id", "Description", patient.TitleId);
return View(patient);
}