1

RIA サービスを介して実行したいカスタム ストアド プロシージャが SQL Server にあります。スカラーの戻り値の型を使用して関数のインポートを完了しました (ストアド プロシージャが行数を返すと仮定すると int)。ObjectContext でストアド プロシージャを確認できます。Silverlight クライアントから呼び出されたストアド プロシージャを RIA サービスにラップしました。この例では、クライアントはメソッド「ApproveOrRejectLeave」を呼び出していますが、サーバー側のコードは実行されません。tmsService.SubmitChanges() を呼び出してみましたが、サーバー側では何も起こりません。

何か不足していますか?

クライアント側:

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

サーバ側:

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

ありがとう、ラヴ

4

1 に答える 1

1

理由を見つけました!! 必要なのは[Invoke]属性だけです。RIAサービスは、EntityState(それぞれModified、Inserted、またはDeleted)に基づいて、[Edit]、[Insert]、および[Delete]属性を持つメソッドを呼び出します。私のメソッドには特定のアクションがなく、ストアドプロシージャ呼び出しであるため、RIAは「有効な」EntityStateを見つけることができず、このサーバーメソッドを呼び出しません。[Invoke]属性でそれを飾ることはトリックをしました!!

[Invoke]
    public void ApproveOrRejectLeave(LeaveRequestView current) {     ObjectResult result = this.ObjectContext.ApproveOrRejectLeave(current.EmpId, current.ReviewedByUserId, current.StatusId); } 
于 2012-01-25T07:32:07.607 に答える