У меня есть модель, которая размещена на моем бэкэнде в виде cs html. Эта модель также является представлением таблицы базы данных.
Этот код выглядит для HTTP POST следующим образом:
[HttpPost]
public IActionResult CreateAKG(Conversation akg)
{
if (ModelState.IsValid && ValideD3OrD4Values(akg))
{
akg.RDPflichfelderBefuellt = true;
}
else
{
akg.RDPflichfelderBefuellt = false;
}
if (akg.Kommentare == null)
{
akg.Kommentare = new List<Kommentar>();
}
if (akg.AuftragsklaerungsgespraechId == 0)
{
this.MyDatabase.Conversation.Add(akg);
}
else
{
this.MyDatabase.Conversation.Update(akg);
}
this.MyDatabase.SaveChanges();
return RedirectToAction("Index");
}
Класс, который представляет модель, называется Conversation. Есть некоторые свойства, которые аннотируются аннотациями проверки. Аннотация должна использоваться только Controller / ModelState.IsValid, а не для таблицы базы данных.
Вот пример кода:
public class Conversation
{
public int ConversationId { get; set; }
[Required(ErrorMessage = "This field is required.")]
public DateTime? DatumAKG { get; set; }
[MaxLength(256, ErrorMessage = "This field cannot be more than 256 characters")]
public string KontierungFertigungskosten { get; set; }
[MaxLength(256, ErrorMessage = "This field cannot be more than 256 characters")]
public string KontierungQVP { get; set; }
[MaxLength(256, ErrorMessage = "This field cannot be more than 256 characters")]
public string KontierungLayoutkosten { get; set; }
[MaxLength(256, ErrorMessage = "This field cannot be more than 256 characters")]
public string KontierungBeschaffung { get; set; }
public bool RDPflichfelderBefuellt { get; set; }
}
ModelState.IsValid используется только для проверить, является ли логическое значение истинным или ложным. Другие проверки не нужны.
Моя проблема заключается в том, что из-за аннотации данных строка, которая обычно может быть NULL в базе данных, теперь находится в дизайне базы данных, настроенном как NOT NULL.
Если я пытаюсь чтобы сохранить новый диалог в базе данных, выдается ошибка, что некоторые строковые значения не могут быть нулевыми.
То, что я хочу сделать, это:
Проверка на контроллере
Нет аннотации проверки, которая изменяет дизайн базы данных