2012-01-24 4 views
1

RIAサービスで実行したいSQLストアドプロシージャがあります。私は関数のインポートをスカラーの戻り値の型(ストアドプロシージャが行数を返すと仮定してint)で完成させました。私は私のObjectContextで私のストアドプロシージャを見ることができます。私はSilverlightクライアントから呼び出されたRIAサービスに格納されたprocをラップしました。この例では、クライアントはメソッド "ApproveOrRejectLeave"を呼び出していますが、サーバー側コードは決して実行されません。私はtmsService.SubmitChanges()を呼び出すことも試みましたが、サーバー側で何も起こりません。RIAストアドプロシージャ - サービスコードが実行されない

何か不足していますか?

クライアント側:

EmpDomainContext tmsService = new EmpDomainContext(); 
tmsService.ApproveOrRejectLeave(leaveRequest); 

サーバーサイド:

public void ApproveOrRejectLeave(LeaveRequestView current) 
{ 
    ObjectResult result = this.ObjectContext.ApproveOrRejectLeave(current.EmpId, current.ReviewedByUserId, current.StatusId); 
} 

おかげで、 RAV

答えて

1

私は理由を発見しました!必要なのは[Invoke]属性だけです。 RIA Servicesは、EntityState(Modified、Inserted、またはDeletedそれぞれ)に基づいて[編集]、[挿入]および[削除]属性でメソッドを呼び出します。私のメソッドは特定のアクションを持たず、Stored Proc呼び出しであるため、RIAは「有効な」EntityStateを見つけることができず、このサーバーメソッドを呼び出さない。 [Invoke]属性でそれを装飾することがトリックでした!

[Invoke] 
    public void ApproveOrRejectLeave(LeaveRequestView current) {  ObjectResult result = this.ObjectContext.ApproveOrRejectLeave(current.EmpId, current.ReviewedByUserId, current.StatusId); } 
関連する問題