2014-12-26 6 views
0

У меня есть приложение MVC с пользовательской страницей входа. Модель создается Entity Framework и называется «Пользователь». Когда используется журнал, код сервера обновляет дату входа: user.LoginDate = DateTime.Now; И он отлично работает.Ошибка проверки даты MVC в Entity Framework

Но теперь я начал применять валидацию. То, что я сделал это: 1) Я создал еще один класс, сделал это частичным и названный User.cs:

[MetadataType(typeof(UserMetadata))] 
public partial class User 
{ 
    [Bind] 
    public class UserMetadata 
    { 
     [DisplayName("Email")] 
     [Required(ErrorMessage="Email field is required")] 
     [EmailAddress(ErrorMessage = "Invalid Email Address")] 
     [StringLength(30)] 
     public string UserEmail { get; set; } 

     ... 

     [Range(typeof(DateTime), "1/1/2010", "2/2/2024", ErrorMessage = "message")] 
     public Nullable<System.DateTime> LoginDate { get; set; } 
    } 
} 

А теперь у меня есть проблема. Когда EF пытается обновить базу данных, она выдает ошибку о некоторой проблеме проверки данных в коде, где я пытаюсь обновить поле LoginDate.

Если я прокомментирую этот класс, он отлично работает, без ошибок, но без проверки.

Я подумал, что, может быть, это DateTime формат, поэтому я также попробовал следующий атрибут для поля LoginDate:

 [DataType(DataType.DateTime)] 
     [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{yyyy/MM/dd HH:mm:ss tt}")] 

попытался также [DisplayFormat (ApplyFormatInEditMode = истинное, DataFormatString =/дд «{ГГГГ/ММ HH: mm: ss.fff} ")]

Однако это не помогло, и это очень неприятно, потому что, когда я смотрю на свою базу данных, я вижу, что LoginDate написан в правильном формате: 2014-12 -26 19: 49: 12.247

Просьба сообщить.

+0

Зачем нужна проверка 'LoginDate'? Это поле не является пользователем. Ваш собственный код сервера присваивает ему правильные значения. –

+0

В большинстве примеров класс метаданных является внешним по отношению к классу, который он описывает, может быть проблемой. Кроме того, свойства метаданных имеют тип объекта. Но я только угадываю здесь. – Darek

+0

Возможно, вам не нужны метаданные: http://www.remondo.net/entity-framework-code-first-data-annotations/ – Darek

ответ

0

Я только что исправил проблему. Решение: я удалил атрибут [Bind] и теперь он работает.

Смежные вопросы