Я пытаюсь сериализовать некоторые объекты, сгенерированные LINQ to SQL для использования с Memcached , если это вообще возможно. Я работаю над новым транскодером, который будет действовать как новый сериализатор для использования с объектами LINQ to SQL.
Кажется, классы DataContractSerializer
не пытаются сериализовать реляционные объекты. Например, если бы у меня были эти отношения:
Course -> CourseProject -> Project
Свойства для Course
будут сериализованы, но реляционные списки для CourseProject
и Project
будут пустыми, а не нулевыми. Я почти уверен, что это функция однонаправленной сериализации, чтобы избежать циклических избыточностей.
Вот проблема с этим ... при загрузке элементов из кэша отношения полностью пусты (пусто IEnumerable
, а не null
) и никогда не будут загружены из базы данных, если будет запрошено. Фактически все проекты курса теряются при извлечении из кэша.
Если бы я мог сериализовать хотя бы один или два уровня глубже, чем базовый объект, это было бы полезно. Если это невозможно, то я бы даже предпочел, чтобы несериализованные данные загружались из базы данных «лениво», хотя подобного рода не идет вразрез с целью сериализации и кэширования.