!!! Пожалуйста, не перенаправляйте эту статью, так как она не решает проблему, описанную ниже.
Скажем, у нас есть такая таблица в базе данных:
SomeTable
- ID (int)
- DT (datetime)
Мы настроили контекст данных Linq2Sql. И мы настроили объект для SomeTable: Метод OnLoaded изменяет DT таким образом, что DateTimeKind DT становится Utc (изначально это Unspecified).
Теперь вот проблема:
Если мы запрашиваем данные с использованием целой сущности, вызывается метод OnLoaded:
From x In ourDataContext.SomeTable Select x
Но если мы запрашиваем только часть таблицы (и, следовательно, генерируем анонимный тип), OnLoaded не вызывается:
From x In ourDataContext.SomeTable Select x.DT
Понятно, что OnLoaded определен в сущности SomeTable, а не в анонимном типе.
В настоящий момент я рассматриваю создание настраиваемых объектов, которые заменяют анонимные типы. Но может быть, у кого-то есть лучшее решение?