Службы данных WCF и прогнозы. Как получить URI объекта из экземпляра проекции объекта? - PullRequest
0 голосов
/ 30 августа 2010

Я использую DataServiceContext для загрузки проекций некоторых сущностей (сущности имеют много свойств, чтобы минимизировать трафик, я загружаю только те свойства, которые необходимы на данный момент), например:

from x in ctx.Portfolios
       select new 
       {
         Id = x.Id,
         Name = x.Name,
         PortfolioName = x.PortfolioName,
         Description = x.Description,
         ValidFrom = x.ValidFrom,
         ValidUntil = x.ValidUntil
       };

Что мне нужноявляется допустимым URI объекта, чтобы загрузить его для подробного просмотра.

Я пытался использовать ctx.TryGetUri (obj, out uri), но он всегда возвращает ноль (возможно, из-за проекций без отслеживания)однако я загрузил свойство PK (Id), поэтому это не должно иметь место).

Вопрос в том, как определить URI базового объекта данных, имеющего объект проекции сPK?

1 Ответ

1 голос
/ 02 сентября 2010

В C # анонимные типы генерируются с ненастраиваемыми свойствами (свойства не имеют установщиков). В результате клиент служб данных WCF не может отследить их (поскольку это не имеет никакого смысла, он не может перезаписать значение свойства во время материализации). Таким образом, результат заключается в том, что экземпляр не отслеживается. Чтобы обойти это, просто объявите неанонимный класс с нужными вам свойствами и спроецируйте в него (убедитесь, что свойства настраиваемые). Обратите внимание, что анонимные типы VB имеют настраиваемые свойства, поэтому они будут отслеживаться.

...