2011-04-19 5 views
4

엔티티 프레임 워크 객체를 반환하는 webservice가 있습니다. 호출 측에서는 정보를 읽지 않고 아무것도하지 않으므로이 엔티티 프레임 워크 직렬화 속성이 필요하지 않습니다. 엔티티 프레임 워크 객체를 반환 할 때 다음 일련 화 된 텍스트를 제거 할 수 있습니까?Entity Framework에서 EntityKey, EntitySetName 등을 직렬화하지 못하도록 함

<EntityKey> <EntitySetName>ClassName</EntitySetName> <EntityContainerName>MyEntities</EntityContainerName> -<EntityKeyValues> -<EntityKeyMember> <Key>ClassID</Key> <Value xsi:type="xsd:int">9903</Value> </EntityKeyMember> </EntityKeyValues> </EntityKey> 

답변

8

EF에서 여러 가지 POCO 등을 만들어야하는 상황을 읽었습니다. 많은 작업을해야했습니다. 나는 그것에 대해 좀 더 생각하고 Entity 객체를 파고 들기로 결정했다. 그것이 봉인되지 않은 것을보고 나는이 클래스에서 상속받은 사용자 지정 클래스를 만들고 XmlIgnore 특성을 사용하여 EntityKey 필드에 'new'문을 추가했습니다. 내 EF 디자이너 클래스로 돌아가서, 대신 모든 클래스를 CustomEntityObject에서 상속하도록 변경하고 voila !, 불필요한 필드가 없습니다. 이것이 미래의 증거인지 여부는 의심 스럽습니다. 하지만이 프로젝트의 경우 훌륭하게 작동하고 모든 클래스에 대해 DTO를 작성하지 않아도됩니다. 다행히도 다른 사람이 유용하다고 생각하면 유용 할 것입니다.

public class CustomEntityObject : EntityObject { 
    [DataMember] 
    [Browsable(false)] 
    [XmlIgnore] 
    public new EntityKey EntityKey { get; set; } 
} 
+0

서버에서 스키마를 업데이트해도 생존 할 수 있지만 쉽게 다시 채워집니다. – Vaiden

0

나는 알고 있습니다. EntityObject 기본 엔터티를 사용하는 경우 웹 서비스 결과에 항상이 데이터가 있습니다. 노출시키고 싶지 않으면 DTO (원하는 데이터 만 전송할 사용자 정의 개체)를 사용하거나 EntityKey 및 기타 EF 관련 속성이없는 EFv4 및 POCO를 사용해야합니다.

관련 문제