我正在使用的应用程序是使用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 );
任何人都可以判断是否可以吗?
答案 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本身有关。