Проверка Entity Framework - PullRequest
       10

Проверка Entity Framework

16 голосов
/ 10 октября 2008

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

Ответы [ 6 ]

11 голосов
/ 19 октября 2008

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

1) Проверка на другом слое в вашем приложении

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

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

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

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

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

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

6 голосов
/ 15 января 2010

В .NET 4 будет существовать встроенная поддержка проверки в Entity-Framework.

Выезд: http://blogs.msdn.com/adonet/archive/2010/01/13/introducing-the-portable-extensible-metadata.aspx

Так что не усердно работайте над реализацией слишком сложной логики валидации ...

3 голосов
/ 19 октября 2008

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

1 голос
/ 14 ноября 2010

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

public abstract class ValidationObjectContext : ObjectContext{
    ...

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

}

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

0 голосов
/ 20 августа 2013

Рассмотрите возможность реализации IValidatableObject в ваших сущностях.

0 голосов
/ 28 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...