EF4: использование Add Service Reference вызывает проблемы с STE (объектами самообследования), не помните, есть ли изменения? - PullRequest
0 голосов
/ 09 января 2011

Я обнаружил проблему, но она относится к бета-версии VS 2010. Мне интересно знать, была ли эта проблема исправлена ​​в RTM?

В основном, она заявляет (видел через EF 4Самостоятельно отслеживаемые объекты не работают должным образом )

Убедитесь, что повторно используете сгенерированный код объекта шаблона Само отслеживающегося объекта на своем клиенте.Если вы используете прокси-код, сгенерированный Add Service Reference в Visual Studio или каком-либо другом инструменте, по большей части все выглядит правильно, но вы обнаружите, что сущности фактически не отслеживают свои изменения на клиенте.

Я очень привык использовать Add Service Reference, и в прошлом он всегда отлично работал для меня, но, конечно, я не использовал STE (объекты самообследования).По-прежнему ли эта проблема связана с VS 2010 RTM и шаблоном STE?

Если я создам прокси с помощью кода вместо службы добавления, тогда все классы не будут созданы, не так ли?

Любая помощь или понимание действительно ценится

1 Ответ

1 голос
/ 09 января 2011

Это не проблема, и это никогда не было проблемой. Это абсолютно ожидаемое и правильное поведение. STE - это классы, которые содержат данные и логику (логика отслеживает изменения).

При добавлении ссылки на службу ваш прокси-код клиента генерируется из метаданных службы. Метаданные выставляются в виде WSDL. WSDL - это описание сервиса на основе XML, которое также содержит XSD-описание типов передаваемых данных. XSD может описывать только формат данных, но не связанную логику, реализованную типом. По умолчанию все неизвестные типы данных, описанные в WSDL, генерируются на клиенте. Поэтому, когда вы создаете клиентский прокси со всеми типами данных с помощью Добавить ссылку на службу, логика отслеживания теряется.

Чтобы преодолеть эту проблему, вам нужно сделать две вещи:

  • Создайте отдельную сборку и поместите все ваши STE в эту сборку. Затем поделитесь этой сборкой среди всех задействованных слоев (да, вы должны использовать Добавить ссылку в вашем клиенте).
  • Затем вы можете использовать опцию Добавить сервис с проверкой «Повторное использование типов в ссылочных сборках».
...