2013-06-19 3 views
0

도메인 서비스가 원활하게 실행되고 일부는 정의 된 엔터티의 일반 목록을 반환하지만 일부 이유로 일반적인 정보를 추가하여 일반 객체를 만들었습니다 컬렉션에 필요한 정보가 더 필요합니다. silverlight 도메인 서비스가 일반 객체를 반환하지 못하도록합니다.

하지만 이후 변경 한 클라이언트에 서비스를 사용하려고 할 때, 함수가 컨텍스트에 표시되지 않습니다, 난 이미 일반적인 된 IQueryable

내 랩의 속성을 그것에 대해 검색하고 제가 발견 한 것은이었다 내 서비스 도메인에서 클래스

public class Wrap<T> 
{ 

    public String commonProperty { get; set; } 
    public String anotherCommonProperty { get; set; } 
    public List<T> items { get; set; } 

} 

public Wrap<SomeClass> GetAll() 
{ 

    Wrap<SomeClass> myObject = new Wrap<SomeClass>(); 
    myObject.items = new List<SomeClass>(); 
    myObject.commonProperty = "some info"; 
    myObject.anotherCommonProperty = "some info"; 
    return myObject; 

} 

답변

0

아마 Wrap<T> 클래스의 [KnownType(typeof(SomeClass))] 속성을 추가, t 문제는 도메인에있는 모든 클래스에 하나의 KnowType 속성을 포함해야한다는 것입니다. 이는 다형성 서비스를 만들기 때문입니다.

[ServiceKnownType(typeof(SomeClass))]을 서비스에 GetAll 방법으로 추가하십시오 (wcf 서비스의 경우 도메인 서비스에 유효한지 여부는 알 수 없음).

0

WCF RIA 도메인 서비스는 일반 엔터티 형식을 지원하지 않습니다.IEnumerable<T>IQueryable<T>은 특별한 경우입니다.

supported method type과 일치하지 않으므로 메서드가 무시되었습니다. 변경 전 GetAll이 쿼리 메서드로 인식되었습니다. 속성을 추가하여 강제로 추가 할 수 있습니다.

[Query] 
public Wrap<SomeClass> GetAll() 

이제는 자동으로 사라지지 않습니다. 그러나 대신 컴파일 시간 오류가 발생합니다.

형식 'Wrap`1'은 (는) 유효한 엔터티 형식이 아닙니다. 엔티티 유형은 일 수 없습니다.

관련 문제