2011-10-17 3 views
1

SL 응용 프로그램에서 도메인 서비스를 구현하려고하는데 다음 오류가 발생했습니다.매개 변수는 DomainService에서 제공하는 엔터티 유형이어야합니까?

도메인 메서드 'CreateSharePointFolder'의 'spFolderCreate'매개 변수는 DomainService에서 제공하는 엔터티 형식이어야합니다.

[EnableClientAccess()] 
public class FileUploadService : DomainService 
{ 
    public void CreateSharePointFolder(SharePointFolderCreate spFolderCreate) 
    { 
     SharePointFolder spf = new SharePointFolder(); 
      spf.CreateFolder_ClientOM(spFolderCreate.listName, spFolderCreate.fileName); 
    } 

[OperationContract] 
    void CreateSharePointFolder(SharePointFolderCreate spFolderCreate); 

[DataContract] 
public class SharePointFolderCreate 
{ 
    private string m_listName; 
    private string m_fileName; 

    [DataMember] 
    public string listName 
    { 
     get { return m_listName; } 
     set { m_listName = value; } 
    } 

    [DataMember] 
    public string fileName 
    { 
     get { return m_fileName; } 
     set { m_fileName = value; } 
    } 
} 

나는이 모든 것을 작동시키기 위해 여기에 간단한 것을 놓치고 있습니까?

답변

7

"Create"라는 단어 앞에 함수 이름 접두사 (CreateSharePointFolder)가 있기 때문에 프레임 워크가 의도 한 작업을 유추하고있을 수 있습니다. 이 동작에 대한 세부 정보는 here

도메인 서비스 및 EntityFramework에 대해서는이 문서의 정보를 따르는 것이 좋지만 "삭제"를 시작하는 메서드는 엔터티 삭제를 수행한다는 것을 유추 할 수 있습니다. 엔티티를 매개 변수로 승인하십시오. 접두사가 붙은 "Create"또는 "Insert"도 마찬가지입니다. "Get"또는 "Select"메소드 만이 엔티티가 아닌 매개 변수를 취할 수 있으므로 숫자 ID (예 :)를 "Get"메소드에 전달할 수 있습니다.

일시적으로 메서드 이름을 "BlahSharePointFolder"로 변경하여 문제의 원인이되는이 유추 규칙인지 확인하십시오.

또한 SharePointFolderCreate DC에 대해 정의 된 메타 데이터가 없기 때문에 [MetadataType] 특성을 사용하여 클래스를 ([DataContract] 특성 외에도) 장식해야 할 수도 있습니다. DomainServiceClass 마법사를 사용하고 EF 모델을 가리킨 경우이를 구현하는 방법을 볼 수 있습니다. 하단에는 메타 데이터 생성을위한 체크 박스가 있습니다. 어딘가에 솔루션. 웹 프로젝트 도메인 서비스 .metadata.cs 파일을 찾을 수 있습니다. 이 파일에는 [MetadataType] 특성 사용 방법에 대한 예제가 있습니다.

RIA WCF 서비스가 자신의 메서드로 올바르게 작동하려면 매개 변수 목록에있는 모든 엔터티에 메타 데이터 클래스에 [Key] 특성이 정의 된 멤버가 적어도 하나 이상 있고 해당 엔터티가 "Get"메서드에서 DomainService 어딘가에 반환됩니다.

HTH

+1

그것이 [키] 속성과 나에게 문제의 원인이 된 메타 데이터 클래스였다와이 업데이트 싶었다. 너무 많은 고통 후에, 마침내 그것을 알아 냈다. – PixelMuse