Сериализация LINQ-объектов в JSON-строки - ОГРОМНЫЕ строки
-
23-08-2019 - |
Вопрос
Я использую LINQ для доступа к своей базе данных и, таким образом, получаю созданный LINQ объект, который я хочу отправить в браузер (это веб-сервис) в виде JSON-объекта.На данный момент это работает хорошо, но когда я добавляю некоторые тестовые данные в базу данных (около 10-20 записей в каждой таблице), это с треском проваливается.Причина в том, что LINQ-object содержит все объекты, на которые ссылаются.Это становится огромным довольно быстро.Например.каждый resourcetype содержит все свои ресурсы, которые содержат все reservationlines, которые содержат каждое резервирование..
Есть ли у вас какие-либо советы о том, как мне следует решить эту проблему?Есть ли настройка в сериализаторе, которую я могу установить?Я использую json.net для сериализации объектов.Или есть какая-то настройка в LINQ?
В лучшем случае я не хочу создавать новые объекты до их сериализации, так как очень удобно просто сериализовать LINQ-объекты напрямую :)
Решение
Наилучшей практикой, по крайней мере на данный момент, является не сериализовывать LINQ для объектов SQL или сущностей Entity Framework.Основная причина этого заключается в том, что они включают данные, зависящие от реализации, из базовых классов.
Вместо этого сериализуйте то, что вы хотите сериализовать.Используйте объекты передачи данных, точно соответствующие тому, что вы хотите отправить, и скопируйте в них объекты LINQ to SQL перед отправкой.