#ef-code-first #code-first #wcf-ria-services #ef4-code-only
#ef-code-first #сначала код #wcf-ria-services #ef4-только код
Вопрос:
(извините за мой плохой английский)
В приложении Silverlight 4 RIA Services EF4, использующем только код, у меня есть несколько классов в моем DbContext, которые содержат поле «isActive» — я хочу узнать у клиента, есть ли у объекта это поле, и получить его. Моей первой мыслью было использовать интерфейс:
public interface IHasActiveField
{
bool IsActive {get; set;}
}
public class Data: IHasActiveField
{
public bool IsActive {get; set;}
}
Это отлично работает на сервере, но на клиенте сгенерированный RIA код не имеет никакой ссылки на мой интерфейс, поэтому я не могу протестировать if (obj is IHasActiveField)
— то же самое произойдет, если я попытаюсь наследовать от базового класса с IsActive
полем, на стороне клиента класс Data
всегда наследуется от Entity
— я, вероятно, мог бы использовать отражение, чтобы увидеть, существует ли поле, или просто протестировать для каждого типа ( if (obj is Data)
), но если возможен более элегантный способ, это было бы намного лучше 🙂
Ответ №1:
Следующий блог звучит так, как вы хотите.
«Все, что вам нужно сделать, это использовать частичный класс для вашей модели и назвать файл .shared.cs (или .shared.vb). Этот файл будет автоматически скопирован в проект Silverlight, поэтому все, что в нем есть, будет сохранено на клиенте. Итак, со всей реализацией интерфейса в этом файле все готово «.http://jeffhandley.com/archive/2009/03/30/ria-services-custom-interfaces.aspx