2012-01-24 3 views
1

У меня есть обычная хранимая процедура на SQL Server, которую я хотел бы выполнить через службы RIA. Я завершил импорт функции со скалярным типом возвращаемого значения (int, предполагая, что сохраненный proc возвращает количество строк). Я вижу свою хранимую процедуру в объекте ObjectContext. Я завернул сохраненную proc в моем сервисе RIA, вызванном из моего клиента Silverlight. В этом примере клиент вызывает метод ApproveOrRejectLeave, но серверный код никогда не выполняется. Я даже пытался называть tmsService.SubmitChanges(), но ничего не происходит на стороне сервера.RIA Stored Proc - код службы не выполняется.

Я что-то упустил?

Client Side: Side

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

Сервер:

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

Спасибо, Рав

ответ

1

Я нашел причину !! Все, что требуется, - это атрибут [Invoke]. RIA Services вызывает методы с атрибутами [Edit], [Insert] и [Delete] на основе EntityState (Модифицированные, Вставленные или Удаленные соответственно). Поскольку мой метод не имеет действия в конкретном и является вызовом Stored Proc, RIA не может найти какой-либо «действительный» EntityState и не вызывает этот серверный метод. Украсить его атрибутом [Invoke] сделал трюк !!

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