В моем приложении SilverLight у меня есть простая сущность-модель, содержащая одну таблицу: [Memo]. Памятки таблица макет определения/класс:Silverlight RIA: свойства расширения на стороне сервера на модели не игнорируются RIA
псевдо-код режим
Partial Class Memo
ID [int autonumbering]
Memo [string]
UserID [int]
End Class
Для моего клиента, я должен видеть нормальное имя, а не [Идентификатор_пользователь] номер в пользовательском интерфейсе так нам нужно перевести это число в поле/свойство [UserID] на читаемое [UserName].
для достижения этой цели мы будем расширять [Memo] Class Серверный с этим:
псевдо-код режима
Partial Class Memo
UserName [string]
End Class
Итак, теперь мы один полный класс, содержащий как UserID и UserName (очень полезно для использования при привязке к datagrid)
У КЛИЕНТСКОЙ СТОРОНЫ у нас есть кешированный список пользователей, поэтому в CLIENT-SIDE мы заполним свойство UserName после EntitySet был у загружаемых клиенту. Здесь возникает моя проблема: после установки свойства объект Entity отслеживается как измененный механизмом DomainService (DomainContext.HasChanges = true).
Так при загрузке DataGrid 100 записей, все записи помечены изменены из-за установки свойства UserName в клиенте, и после редактирования 1 записи, все 100 записей размещены на сервер, как быть «изменены» а не только 1 запись.
Поскольку это свойство является свойством расширения, и я не хочу отслеживать изменения для UserName, я подумал: добавьте атрибут [Ignore], но не кубик. DomainService отслеживает изменения UserName. Я также попробовал атрибут [IgnoreDataMember], а не Dice. Атрибут [Исключить] не работает, так как он больше не проецируется на клиентскую сторону.
Поэтому я должен уметь восстановить состояние отслеживания объектов DomainService после загрузки и расширения данных из базы данных. Другим решением является расширение данных на стороне сервера, но пока это не вариант.
Любые идеи были бы весьма признательны.
Ремко ван Diesen
Действительно, отличное предложение, теперь у нас есть расширения как на стороне сервера, так и на стороне клиента. Расширения клиентской стороны не отслеживаются контекстом базы данных. – Remco