Ошибка при создании частичных классов с помощью LLBLGenPro

#asp.net-mvc #llblgenpro #data-annotations

#asp.net-mvc #llblgenpro #данные-аннотации

Вопрос:

Я просто пытаюсь объявить частичные классы для созданных инструментом классов LLBLGenPro (частичных), чтобы я мог использовать DataAnnotation для целей проверки. Однако, похоже, здесь что-то не работает.

Вот как выглядит мой код :

 namespace MyApp.DataLayer.EntityClasses
{
    [Serializable]
    public partial class LoginEntity : CommonEntityBase, ISerializable
    {
        .....
    }
}
  

И для примечаний к данным …

 namespace MyApp.DataLayer.EntityClasses
{
    [MetadataType(typeof(LoginEntityValidation))]
    public partial class LoginEntity
    {

    }

    public class LoginEntityValidation
    {
        [Required(ErrorMessage = "Required !")]
        public string Username { get; set; }
    }
}
  

// Это приводит к ошибкам во время компиляции «MyApp.dataLayer.Классы объектов.LoginEntity’ не содержит конструктора, который принимает 1 аргумент» и так далее.

Есть идеи, как заставить это работать?

Заранее спасибо!

Ответ №1:

Вы не должны использовать свои классы сущностей в представлениях. Вы должны использовать классы ViewModel и поместить туда проверку. Для преобразования entity-> viewmodel вы можете использовать AutoMapper

Комментарии:

1. Спасибо за ваш ответ! Хорошо, я настроил автоматическое отображение. Но как мне сделать это для проверки моих основных объектов? В принципе, я хочу прикрепить атрибуты проверки к моим основным объектам, чтобы проверка могла выполняться в любом месте, независимо от какого-либо конкретного уровня. Однако это отлично работает с EntityFramework.

2. Я думаю, что смешивать валидацию и бизнес-логику — плохая идея. Вы должны применить логику проверки к пользовательскому вводу, который инициирует изменения данных, и сохранить вашу модель домена для бизнес-логики