OnValidate () и LINQ to Entities

Я хотел бы реализовать некоторую проверку бизнес-правил, как это сделал Скотт Гатри в своем учебнике по MVC Nerddinner (http://nerddinnerbook.s3.amazonaws.com/Part3.htm), но при попытке сделать это у меня возникла проблема.

Скотт использовал Linq to SQL в своем руководстве. Он создает частичные классы для своих объектов данных, а затем реализует частичный метод OnValidate (), который, по его словам, является ловушкой, которая запускается, когда данные сохраняются в базе данных для данного объекта данных.

public partial class Dinner {

  partial void OnValidate(ChangeAction action) {

    if (!IsValid)
      throw new ApplicationException("Rule violations prevent saving");
    }

}

Моя проблема в том, что я использую Linq to Entities, и, по-видимому, нет метода «перехвата», подобного приведенному выше, который можно было бы использовать, или, по крайней мере, я не могу его найти, если он есть. Может ли кто-нибудь бросить мне кость о том, как это сделать с Linq to Entities?


person Jagd    schedule 02.06.2009    source источник


Ответы (2)


Вы можете выполнять проверку данных в linq-to-entity, но, как вы обнаружили, она отличается от linq-to-sql. См. Следующую ссылку:

проверка данных в linq-to-entity

person The Beaver    schedule 03.06.2009

Проверять:

person Robert Koritnik    schedule 02.06.2009
comment
Кажется, что ваши ссылки относятся только к Linq to SQL, а не к Linq to Entities. К сожалению, те же концепции, которые работают с Linq to SQL, не работают с Linq to Entities, когда дело доходит до проверки данных во время сохранения. - person Jagd; 04.06.2009
comment
Нет ты ошибаешься. Аннотации к данным работают с ЛЮБЫМИ классами. Также EF сгенерировал. За исключением того, что вы будете работать с атрибутом MetadataType и классами, которые будут определять этот тип метаданных. - person Robert Koritnik; 04.06.2009