Перехватить событие загрузки объекта в Entity Framework?

Существует ли EF, эквивалентный LINQ to SQL's OnCreated partial?

Некоторые из моих объектов имеют поля XML, которые я хотел бы анализировать всякий раз, когда объект загружается из базы данных - я хотел бы поместить данные XML в более удобные строго типизированные коллекции. Я уже пометил поле XML как частное и подключил событие SavingChanges для повторного построения XML до того, как элемент будет передан обратно в базу данных, но я не могу понять, как заполнять коллекции всякий раз, когда объект загружается.

Я подумал об использовании партиала OnFieldChanged для моего поля XML, но он будет запускаться снова, когда поле XML перестраивается во время SavingChanges, поэтому кажется, что должен быть лучший способ.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
2 926
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Насколько мне известно, нет события OnLoaded или подобного. Обходной путь может заключаться в том, чтобы предоставить коллекции как свойства и лениво создавать / анализировать значения при первом доступе:

private List<SomeData> _parsedDataCache;
public IList<SomeData> ParsedData {
    get {
        if (_parsedDataCache == null)
            ParseData();
        return _parsedDataCache;
    }
}

Я сделал это для нескольких полей .. Я обычно помещаю общее поле [Data] NVARCHAR (MAX) во все свои таблицы для такой расширяемости .. тогда у меня есть метод void SetData (action <XElement data> runner). Это позволяет контексту переводить в базовый XElement из строки (кэшированной), а затем обновлять после ... Я также подключился через SavingChanges для вызова частного метода void BeforeSave (), если он существует в частичном ... в целом неплохо.

Tracker1 14.10.2011 21:21

Вы должны создать частичный класс (как в LINQ to SQL) и просто использовать конструктор по умолчанию.

Это не работает. Значения поля XML еще не установлены во время создания.

Michiel Cornille 04.08.2011 16:13

Первоначальный вопрос был «Есть ли EF, эквивалентный LINQ to SQL OnCreated partial», и мой ответ имеет отношение к этому.

Baldy 04.08.2011 17:50

Или используйте событие ObjectContext.ObjectMaterialized в .net 4.0

Другие вопросы по теме