Можно ли добавить сериализуемое свойство в Entity или ComplexType с помощью RIA Services?Или я могу создать DTO, который содержит EntityObject
, используя RIA?Если это невозможно, то какой обходной путь?
Я видел Как расширить сущность при использовании служб RIA с Silverlight? , которая связана с добавлением свойства к сущности, но этосвойство без данных, которое просто оборачивает существующие свойства.Другими словами, он не содержит никаких новых данных.Я прошу прощения за длину этого вопроса.
У меня есть два результата (один EntityObject
из запроса таблицы и один ComplexObject
из сохраненного процесса) в моем слое данных, который я хочу вернуть вместе ив одном сервисном звонке.Они неразрывно связаны с точки зрения представления (один не имеет смысла без другого), и было бы неприлично делать два вызова, а затем присоединять их к клиентской стороне.Но у меня проблемы с получением двух объектов в одном результате.
Сначала я попытался расширить ComplexObject
, добавив свойство для Entity
public partial class MyProcResult
{
[DataMember]
public MyEntity Foo { get; set; }
}
и заполнив его в операции службы домена.Свойство устанавливается на стороне сервера, но оно не сериализуется - фактически клиент даже не видит свойство!
После некоторого чтения становится очевидным, что я могу сообщить клиенту о свойствах, назвав мой частичный класс MyProcResult.shared.cs
- и теперь клиент знает, что свойство существует, но оно все еще не сериализовано.
Поэтому я предполагаю, что служба RIA не раскрывает очень подробный контракт на обслуживание, и попробую что-то еще.Моя следующая попытка - создать DTO, в который я включу два моих объекта - должно работать, верно?
[DataContract]
public class MyContainer
{
[DataMember]
public MyProcResult Bar { get; set; }
[DataMember]
public MyEntity Foo { get; set; }
}
Опять же, все это заполняется до сериализации.На этот раз клиент не может видеть свойство MyEntity .Он считает, что MyContainer
имеет только свойство MyProcResult
.Сгенерированный код на стороне клиента не содержит другого свойства!
Что происходит?Что особенного в этих сущностях, которое мешает им сериализоваться, когда они помечены [DataMember]
или включены в DTO?