Подтвердить что ты не робот

Проверка структуры сущностей

Я готов начать новый проект, и я изучаю структуру сущности. Мой вопрос - это лучшая стратегия для проверки сущности? Другие проекты, над которыми я работал, использовали атрибуты для большей части проверки, но, очевидно, это невозможно в инфраструктуре сущности. Единственный способ сделать это, обработав частичные методы в сеттерах свойств? Все советы очень ценятся.

4b9b3361

Ответ 1

Я раньше не использовал инфраструктуру Entity, но быстрый поиск указывает, что у вас есть несколько вариантов.

1) Проверить на другом уровне в приложении

Всегда вариант, я просто подумал, что я его явно выброшу.

2) Подключитесь к событиям OnChanged объекта, затем выполните проверку

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

3) Реализовать частичные методы для проверки изменений свойств

В соответствии с этот пост и это обход частичные методы, доступные для проверки. Это похоже на ваш лучший вариант, поскольку он не очень навязчивый, и вы можете выборочно выполнять требуемую проверку.

Надеюсь, это поможет. Удачи.

Ответ 3

Если вы используете ASP.NET MVC, вы можете использовать блок Application Validation или System.ComponentModel.DataAnnotations. Статьи Использование аннотаций данных и Использование блока приложений как их использовать с помощью Linq, но использование с сущностью-структурой должно быть аналогичным.

Ответ 5

Мы переопределим контекст объекта и перехватим метод SaveChanges()

public abstract class ValidationObjectContext : ObjectContext{
    ...

    public override int SaveChanges(SaveOptions options){
        ValidateEntities();
        return base.SaveChanges(options);
    }

}

Таким образом, валидация остается до последней минуты до того, как будут сделаны соединения, но после того, как вы (ожидаете) будете довольны графиком и готовы к фиксации (в отличие от других вариантов проверки при любых изменениях, поскольку некоторые сложные правила, подобные тем, которые у нас есть, действительны только после установки нескольких свойств.). У нас есть два уровня валидации: проверка базового свойства, такие, как длина строки, неопределенность и т.д. И проверка бизнес-логики, которая может потребовать проверки правил для нескольких объектов, возможно, попав в базу данных для подтверждения.

Ответ 6

Если вы используете WPF или Windows Forms, вы можете реализовать интерфейс IDataErrorInfo.

Пример BookLibrary приложения Проект WPF Application Framework (WAF) показывает, как сущности, созданные платформой Entity Framework, могут быть проверены.

Ответ 7

Рассмотрите возможность применения объекта IValidatableObject в своих объектах.