2012-01-04 1 views
0

세 가지 다른 엔티티 유형의 세 가지 목록 인 세 가지 속성을 사용하여 메시지 객체를 만들었습니다. 검색 기준에 맞는 모든 엔터티를 반환하는 검색을 모두 수행하려고하기 때문에 메시지 클래스를 만들었습니다. 하나의 호출에서 이것을하고 싶습니다. 세 개의 호출 (각 엔티티마다 하나씩)이 별도의 호출이 아닙니다. 컴파일되고 클라이언트 측 디자이너가 엔터티, 서비스의 Search All 메서드, 메시지 개체 클래스를 생성하지만 메시지 개체 속성은 생성하지 않습니다. RIA Services에서 이것이 가능합니까? 그렇다면 왜 내가 뭘 잘못하고 왜 설명 할 수 있습니까? 감사!RIA 서비스 EF 속성 목록으로 엔티티 목록이있는 MessageObject 만들기

서버 측 클래스 선언 :

[Serializable] 
[DataContract(IsReference = true)] 
public class SearchAllMessage 
{ 
    [DataMember] 
    public List<Entity1> Entity1List { get; set; } 
    [DataMember] 
    public List<Entity2> Entity2List { get; set; } 
    [DataMember] 
    public List<Entity3> Entity3List { get; set; } 
} 

클라이언트 측 디자이너에서 생성 한 코드 :

/// <summary> 
/// The 'SearchAllMessage' class. 
/// </summary> 
[DataContract(Namespace="http://schemas.datacontract.org/2004/07/SharebackMaintenance.RiaService.Web")] 
public sealed partial class SearchAllMessage : ComplexObject 
{ 

    #region Extensibility Method Definitions 

    /// <summary> 
    /// This method is invoked from the constructor once initialization is complete and 
    /// can be used for further object setup. 
    /// </summary> 
    partial void OnCreated(); 

    #endregion 


    /// <summary> 
    /// Initializes a new instance of the <see cref="SearchAllMessage"/> class. 
    /// </summary> 
    public SearchAllMessage() 
    { 
     this.OnCreated(); 
    } 
} 

서비스의 메소드 서명 :

[Invoke] 
public SearchAllMessage SearchAll(string fiterA, string filterB, int filterC) 

답변

0

당신의 SearchAllMessage 및 포함 된 항목은 읽기입니다 가정 만 표시하려면 ComplexType으로 표시해야합니다. 당신이해야 할 모든 관련된 각 클래스에 속성 (SearchAllMessage, Entity1 등)

[Serializable] 
[DataContract(IsReference = true)] 
[ComplexType] 
public class SearchAllMessage 
{ 
    [DataMember] 
    public List<Entity1> Entity1List { get; set; } 
    [DataMember] 
    public List<Entity2> Entity2List { get; set; } 
    [DataMember] 
    public List<Entity3> Entity3List { get; set; } 
} 

ComplexTypeAttributeEntityFramework 어셈블리의 구성원을 추가 할 수 있습니다.

엔티티를 쿼리하고 업데이트 할 수있게하려면 [Association(...)], [Include][Composition]을 사용하는 경로로 이동해야합니다.

+0

에드 주셔서 감사합니다. 나는 [ComplexTypeAttribute]를 클래스에 추가했고 지금 클라이언트 측 생성 파일에 "-"System.ComponentModel.DataAnnotations.ComplexTypeAttribute "특성이 클라이언트 프로젝트 'MyProject.RiaService'에 표시되지 않습니다. 어셈블리 참조가 누락 되었습니까? ComplexTypeAttribute 클래스가있는 Silverlight 4 dll을 찾을 수 없습니다. Silverlight 4 dll이 그 속성을 가지고 있는지 알고 있습니까? 이 클래스를 MyDomainService.metadata.cs 파일에도 추가해야합니까? – zBomb

+0

BTW WCF RIA Servics V1.0 SP2 – zBomb

+0

죄송합니다. 특성은 EntityFramework DLL에 있습니다. 지금까지는 System.ComponentModel.DataAnnotations 또는 WCF RIA 어셈블리에서 온 것으로 가정했습니다. –