Я выбрал LINQ to SQL в качестве платформы ORM для проекта ASP .NET MVC3.Все было хорошо, прежде чем я столкнулся с необходимостью добавить дополнительное поле «Подтверждение пароля» в регистрационную форму.Как было упомянуто в одном вопросе о SO (к сожалению, я не могу его найти в данный момент), лучше использовать интерфейс для расширения сгенерированных классов LINQ to SQL с атрибутами проверки, вместо того, чтобы иметь другой класс для хранения атрибутов проверки.Итак, мы идем:
public interface IRegTry
{
[Required]
[Email]
string EMail { get; set; }
[Required]
[StringLength(100, ErrorMessage = "Should not exceed 100 symbols")]
string FirstName { get; set; }
[Required]
string Password { get; set; }
}
[MetadataType(typeof(IRegTry))]
public partial class RegTry : IRegTry { }
RegTry
класс генерируется классом LINQ to SQL на основе сущности базы данных.
В представлении у нас есть поле подтверждения пароля, которое должно гарантировать, чтодва введенных пароля равны друг другу.
Итак, мы добавляем его:
public class RegTryViewModel : RegTry
{
[Required]
[EqualTo("Password", ErrorMessage = "You should type two identical passwords to continue")]
public string ConfirmPassword { get; set; }
}
Представление строго типизированное с моделью RegTryViewModel
.
Я просто прошу здесь убедиться, что я все делаю правильно.Мне неудобно то, что я распространяю логику проверки между интерфейсом IRegTry
и классом RegTryViewModel
.Но я не могу добавить свойство ConfirmPassword
к интерфейсу IRegTry
, потому что базовый SQL для класса LINQ его вообще не имеет.Заранее спасибо, ребята!