Перенос объектов данных LINQ - PullRequest
2 голосов
/ 17 апреля 2009

Я работаю над веб-сервисом, где мы используем LINQ-to-SQL для абстракции нашей базы данных. Когда клиенты используют наш веб-сервис, объекты сериализуются в XML, и все это прекрасно.

Теперь мы хотим разработать наш собственный клиент, который использует нативные типы данных, поскольку нет причин делать объекты-> xml-> объекты. Однако, насколько я понимаю, вы не можете переносить объекты LINQ, поскольку они напрямую отображаются в базу данных и, таким образом, данные являются «живыми».

Мой вопрос заключается в том, существует ли способ сделать «снимок» извлеченных данных, установить для объекта LINQ значение «офлайн» и затем передать его. Данные не изменятся после передачи нашему клиенту, и нам не нужен доступ к базе данных.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2009

Классы LINQ-to-SQL можно использовать с DataContractSerializer (для WCF) достаточно легко (хотя в конструкторе необходимо включить свойство сериализации) Имея это в виду, вы сможете поделиться сборкой данных с клиентом. До тех пор, пока вы не используете контекст данных, сами объекты должны хорошо себя вести (просто отключены - поэтому не ленивая загрузка).

Хитрость в том, что вам необходимо повторно использовать эти типы (из существующей сборки) в коде сериализации. Если вы используете WCF, вы можете сделать это с помощью svcutil /r или через IDE.

Это сказал, хотя; для этих сценариев зачастую проще поддерживать отдельные классы DTO. Но я виноват в том, что иногда делаю это вышеописанным образом.

1 голос
/ 17 апреля 2009

Если вы хотите использовать WCF (для веб-службы и клиента), вы можете украсить сгенерированные классы Linq2SQL с помощью атрибутов [DataContract] и [DataMember].

Проверьте следующие ссылки для некоторых указаний:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...