RIA Web服务使用存储过程保存数据

时间:2011-01-31 08:29:32

标签: web-services stored-procedures silverlight-4.0 ria

我正在使用的应用程序是使用RIA Web服务,存储过程和NHibernate作为ORM。我已经能够检索数据,但我现在遇到更新数据的问题。我遇到了这个http://forums.silverlight.net/forums/p/172626/389010.aspx,我试图按照建议进行设置。所以我的代码(简化)如下:

 private void Save_Click( object sender, RoutedEventArgs e )
 {
     _ctx.Load( _ctx.UpdateProdOrderByWorkCellIdAndDateListQuery( list ), SaveChanges, null );
 }

 private void SaveChanges(LoadOperation<OrderAndOperationAndWCData> obj)
 {
     _ctx.SubmitChanges();
 }

我使用过Fiddler,我可以确认是否调用了Web服务。但问题是,当我查看SQL Server Profiler时,永远不会调用保存存储过程。任何人都可以提出任何可能出错的建议吗?

---编辑

我怀疑我调用存储过程的方式是错误的。我有这样的事情:

this.GetSession().CreateSQLQuery( "exec usp_Update @MyArray=:MyArray" )
            .AddEntity( typeof( OrderAndOperationAndWCData ) )
            .SetParameter( "MyArray", list );

任何人都可以判断是否可以吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了答案,这是由于我对NHibernate缺乏了解/经验。实际上,在我的代码中我有:

this.GetSession().CreateSQLQuery( "exec usp_Update @MyArray=:MyArray" )
        .AddEntity( typeof( OrderAndOperationAndWCData ) )
        .SetParameter( "MyArray", list );

但应该是:

this.GetSession().CreateSQLQuery( "exec usp_Update @MyArray=:MyArray" )
            .AddEntity( typeof( OrderAndOperationAndWCData ) )
            .SetParameter( "MyArray", list )
            .ExecuteUpdate();

虽然我现在已经提出异常,但这很可能与sproc本身有关。