Я делаю приложение Silverlight 4 с услугами службы WCF RIA.Выявление пользовательских свойств Entity Framework на стороне сервера на стороне клиента
На стороне сервера (проект *.Web
) у меня есть модель объекта, которая автоматически генерируется из базы данных SQL Server. На стороне клиента у меня есть служба домена и объекты прокси, которые генерируются Visual Studio для использования в сборках Silverlight.
Я хочу добавить к модели пользовательские свойства (желательно на стороне сервера). Скажем, у меня есть Contact
, Company
и Address
таблицы, которые связаны внешними ключами (но необязательно фактическим внешним ключом ограничений). Я хочу добавить свойство, которое вернет Contact
.
Я пытаюсь сделать это, сделав частичный класс для расширения класса Contact
и добавив свойство CompanyAddress { get; }
. Но я понятия не имею, что мне нужно сделать с новым свойством, чтобы он распространялся на автоматически сгенерированный код на стороне клиента. Существуют ли определенные атрибуты, которые я должен добавить в свойство? Должен ли я регистрировать его где-нибудь, чтобы генератор кода знал об этом?
Должно ли это быть навигационным свойством или может быть что-то проще?
И это даже лучший способ сделать что-либо, или я должен отказаться от расширения серверной модели и просто сделать это на стороне клиента? (Если я делаю это на стороне клиента, мне приходится сталкиваться с проблемой отсутствия доступа к контекстному объекту внутри отдельных классов Entity
).
В настоящее время у меня нет возможности изменять существующую схему базы данных, поэтому я не могу зависеть от отношений внешнего ключа, уже существующих в сгенерированном файле .edmx. Я также не должен вручную модифицировать файл .edmx, так как схема * может * измениться в будущем, и мои модификации будут перезаписаны при восстановлении файла edmx. – kpozin
Затем добавьте сеттер к свойству и проверьте, отмечен ли класс сгенерированной сущностью с атрибутом DataContract. Если да, отметьте свою собственность атрибутом DataMember. –
Благодарим вас за помощь. Я добавил сеттера и отметил свойство с помощью [DataMember]. Это не имеет никакого эффекта; свойство не добавляется в класс прокси-сервера Contact в Generated_Code \\ *. Web.g.cs – kpozin