Наследование только EF-кода на клиенте

#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