У меня есть автогенерированная модель Entity Framework. Он был сгенерирован с использованием первого подхода к базе данных. Столбец mid_initial
имеет ограничение по базе данных, которое ограничивает колонку максимальной длиной 3 символа.База данных Первая проверка
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Agency.DataAccess.RegistrationModel
{
using System;
using System.Collections.Generic;
public partial class Registrant
{
public Registrant()
{
}
public int id { get; set; }
public string fname { get; set; }
public string mid_initial { get; set; }
public string lname { get; set; }
}
}
Когда я пытаюсь создать модель с mid_initial
больше чем 3 персонажей, недопустимое состояние, ModelState.IsValid
возвращается правда. Из-за этого вызывается db.SaveChanges
, который затем поднимает DbEntityValidationException
.
[HttpPost]
public ActionResult Create(Registrant registrant)
{
try
{
if (ModelState.IsValid)
{
Debug.WriteLine("Entity was valid.");
db.Registrants.Add(registrant);
db.SaveChanges();
return RedirectToAction("Index");
}
return View("Create", registrant);
}
catch (DbEntityValidationException e)
{
foreach (var eve in e.EntityValidationErrors)
{
Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
eve.Entry.Entity.GetType().Name, eve.Entry.State);
foreach (var ve in eve.ValidationErrors)
{
Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
ve.PropertyName, ve.ErrorMessage);
}
}
return View(registrant);
}
}
Почему метод ModelState.IsValid
возвращает true? Казалось бы, моя модель не знает ограничения максимальной длины. Как мне это узнать?
Закрыть ... Но, как я понимаю, это не сработает. Компилятор скажет: «Ошибка 2 Тип« Регистрант »уже содержит определение для« mid_initial »...). Необходимо пометить класс« Регистрант »атрибутом« MetadataType »и создать еще один класс для проверки. Http: // stackoverflow. ком/вопросы/25722866/EF5-дб-первая сгенерированная-модель-и-заказ проверка/25741213 # 25741213 –