Как выставить часть Entity как DataContract?

До сих пор при работе с WCF я всегда выставлял целиком либо сгенерированные EF сущности, либо POCO (изменяя шаблон T4 для включения DataContract и DataMember для POCO и свойств) как DataContract.

Теперь я столкнулся с ситуацией, когда я не могу раскрыть все целиком, и мне нужно явно указать мой DataContract как подмножество сущностей.

Стоит сказать, что одна из моих сущностей выглядит примерно так:

И я хочу просто выставить Id, Name, CategoryId, Price.

Вставить / обновить остальные поля (ActiveFrom, InactiveDate, Supported) - это то, что будет решаться на основе БР, и клиент ничего не знает и не должен знать о них.

Я пробовал следующие подходы, но каждый из них, кажется, имеет проблемы / не работает:

С помощьюAutoMapper : Мне нужно сопоставить исходный объект с объектом назначения, и этоодностороннее картированиетак что для целей презентации я могу отобразитьProduct вProductContract, Но для добавления / обновления продукта он не работает, так как он не может сделатьдвустороннее картирование.

Используйте отражение и создайте класс метаданных для сущностей и добавьте[DataMember] приписать свойства класса метаданных, как показано ниже (обратите внимание, что я не включил ненужные поля):

public class ProductMD : AssociatedMetadataTypeTypeDescriptionProvider
    {
        public ProductMD() :
            base(typeof(Product))
        {
        }
        [DataMember]
        public int Id{ get; set; }

        [DataMember]
        public string Name { get; set; }

        [DataMember]
        public int? CategoryID { get; set; }

        [DataMember]
        public decimal? Price { get; set; }
    }

А затем использоватьProductMD в качестве атрибута дляProduct частичный класс, не касаясь автоматически сгенерированной сущности (к вашему сведению: я изменил генератор шаблонов POCO T4, чтобы включить[DataContract] на каждого субъекта):

[MetadataType(typeof(ProductMD))]
public partial class Product
{  
}

Но на стороне клиента у меня нет доступа ни к одному изDataMembers продукта.

Теперь мой вопрос заключается в том, что является лучшим подходом для получения того, что я хочу сделать (выставляя подмножество сущностей какDataContract)?

Ответы на вопрос(2)

Ваш ответ на вопрос