从C#调用Sybase存储过程的问题

时间:2015-04-23 21:50:58

标签: c# entity-framework stored-procedures sybase

我试图在Sybase中调用存储过程来插入我传递的值。我一直用它来获取数据:

 PlayerDbContext db = new PlayerDbContext();       
 String commandString = String.Format(
            "CALL DBA.SP_Player_crud(@id= '{0}',@option = '{1}')",
            playerId,
            "S");

 return db.Database.SqlQuery<Player>(commandString).FirstOrDefault();

这将返回一个播放器对象,它可以正常工作。该选项是在存储过程中用于选择数据(S =选择)或插入数据(I =插入)的标志。

这是即使它与被调用的存储过程相同也不起作用的插入:

 PlayerDbContext db = new PlayerDbContext();       
 String commandString = String.Format(
            "CALL DBA.SP_Player_crud(@id= '{0}',@name = '{1}', @option = '{2}')",
            playerId,
            name,
            "I");

 return db.Database.SqlQuery<Player>(commandString);

不同之处在于,在存储过程中,这个插入名称字段。我意识到这不会返回一个玩家对象(我怀疑这是问题的一部分),但为什么这仍然不起作用?有没有办法只是调用这个存储过程而不期待任何回复?我没试过就试过ExecuteSqlCommand。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这不理想,但我能够通过修改存储过程来返回select语句来解决问题。因此,数据被插入,然后存储过程执行select,返回结果。通过此更改,可以正确执行存储过程。

我的猜测是问题与返回的内容有关,并且它与我的实体不匹配。我不确定在没有选择时默认发送什么,但也许知道这也有助于解决这个问题。

如果其他人有任何意见,请回复,因为我想知道处理此问题的正确方法。