У меня есть веб-сервис, который настраивает объекты структуры сущностей. На вызывающей стороне я ничего не делаю, кроме как читаю информацию, поэтому мне не нужны эти атрибуты сериализации структуры сущностей. Можно ли удалить следующий сериализованный текст при возврате объектов структуры сущности?
<EntityKey> <EntitySetName>ClassName</EntitySetName> <EntityContainerName>MyEntities</EntityContainerName> -<EntityKeyValues> -<EntityKeyMember> <Key>ClassID</Key> <Value xsi:type="xsd:int">9903</Value> </EntityKeyMember> </EntityKeyValues> </EntityKey>
2 ответа
Я читал о том, как EF потребует от меня сделать кучу POCO и тому подобное, что потребовало от меня много работы. Я решил подумать над этим еще немного и покопался в объекте Entity. Убедившись, что он не запечатан, я создал собственный класс, наследующий от этого класса, и добавил «новый» оператор в поле EntityKey с атрибутом XmlIgnore. Вернувшись к моему классу конструктора EF, я изменил все классы, чтобы они унаследовали от CustomEntityObject, и вуаля !, никаких лишних полей. Я сомневаюсь, что это будущее. Но для этого проекта он отлично работает, и мне не нужно было писать DTO для всех моих классов. Надеюсь, кто-то еще сочтет это полезным:
public class CustomEntityObject : EntityObject {
[DataMember]
[Browsable(false)]
[XmlIgnore]
public new EntityKey EntityKey { get; set; }
}
Насколько я знаю, это невозможно. Если вы используете базовые сущности EntityObject
, у вас всегда будут эти данные в результатах веб-сервиса. Если вы не хотите раскрывать их, вы должны либо использовать DTO (настраиваемые объекты, которые будут передавать только те данные, которые вам нужны), либо вы должны использовать EFv4 и POCO, которые не содержат EntityKey
и другие свойства, связанные с EF.
Похожие вопросы
Новые вопросы
entity-framework
Entity Framework — это основанный на LINQ сопоставитель базы данных объектов для .NET. Он поддерживает отслеживание изменений, обновления и миграцию схем для многих баз данных. Также добавьте тег для конкретной версии.