2011-10-17 8 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

関数名(CreateSharePointFolder)の前に "Create"という単語があるため、フレームワークが意図した操作を推測している可能性があります。この動作の詳細は

ことがDomainServicesとEntityFrameworkのためのすべての罰金ですがhereを見つけることができ、その資料の情報以下の、方法がなければなりませんから始まるエンティティの削除を実行します「削除」、そうすることを推測することができますエンティティをパラメータとして受け入れる。接頭辞付きの「作成」や「挿入」の場合も同様です。 "Get"や "Select"メソッドだけがエンティティ以外のパラメータを取ることができるので、数値IDを "Get"メソッドに渡すことができます。

メソッド名を「BlahSharePointFolder」に一時的に変更して、問題の原因となっているこの推論規則であるかどうかを確認してください。

また、SharePointFolderCreate DCに対して定義されているメタデータがないため、([DataContract]属性に加えて)クラスを[MetadataType]属性で修飾する必要があります。 DomainServiceClassウィザードを使用してEFモデルを指している場合、これを実装する方法がわかります。下部にはメタデータを生成するためのチェックボックスがあります。あなたののソリューション。Webプロジェクトのどこかに、ドメインサービス .metadata.csファイルがあります。このファイルには、[MetadataType]属性の使用例があります。

独自のメソッドでRIA WCFサービスを正しく動作させるには、パラメータリストに存在するすべてのエンティティに、メタデータクラスで[Key]属性が定義されている少なくとも1つのメンバが存在し、エンティティGetメソッドでDomainServiceのどこかに返されます。 HTH

リー

+1

はそれでこれを更新するために募集

は、[キー]属性と私の問題を引き起こしていたメタデータクラスでした。あまりにも多くの痛みの後、最終的にそれを考え出した。 – PixelMuse

関連する問題