Есть ли способ изменить доступ EntityKey и ExtensionData к защищенному при использовании Linq-to-entity и WCF? - PullRequest
0 голосов
/ 20 сентября 2010

Я смотрел на использование Linq для сущностей с WCF для некоторых проектов, которые мы делаем.Все до сих пор работало замечательно, но есть одна вещь, в которой я не так уверен.Linq-to-entity создает объекты, которые имеют свойства EntityKey и ExtensionData.Я доволен их доступом в сервисе, но обеспокоен тем, что клиенты, кажется, тоже имеют доступ к этому, поскольку они являются открытыми свойствами в классе EntityObject.

Мне кажется, что это вызывает утечку реализациипотому что клиент не должен знать о том, что этот объект был получен с использованием linq-to-entity.

1 Ответ

2 голосов
/ 20 сентября 2010

Вы не можете изменить модификатор доступа, потому что свойство EntityKey унаследовано от родительского класса EntityObject, который показывает его как открытый.Свойство ExtensionData не связано с каркасом сущности.Он определяется IExtensibleDataObject, который реализован во всех прокси WCF, сгенерированных из Visual studio или svcutil.Опять же, вы не можете изменить его модификатор доступа.

Это обычно причина, по которой люди не представляют сущности как контракты данных в WCF.Если вы используете EF v4.0, вы можете использовать классы POCO или объекты самообследования вместо тяжелых объектов.Если вы не используете EF v4.0, вам следует создать отдельные объекты для передачи данных или попытаться реализовать DataContractSurrogates для ваших сущностей.

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