我有一个简单的要求在silverlight应用程序上实现。我想在下拉列表中列出所有存储过程,并在网格上查看其输出。我目前有一个linq到sql类,我拖动删除了我要查看的所有存储过程并在.dbml文件上生成类。这对我来说很有用。但是,如果我有一个新的存储过程,我不得不生成该类并再次更新服务。
有没有办法在不每次更新服务的情况下查看存储过程的结果?我在考虑使用DataContext.ExecuteCommand方法,但不确定是否有更好的方法来执行此操作。
答案 0 :(得分:1)
首先需要编写一个存储过程,使用类似的语句(根据需要添加过滤)返回数据库中的存储过程列表:
SELECT * FROM sys.procedures
这样您就可以在UI中显示列表而无需重新编译。
第二步是调用存储过程。 DataContext.ExecuteCommand()不会这样做,因为它执行命令而不是查询。这意味着ExecuteCommand()不会给你一个结果集,只有一个int。
DataContext.ExecuteQuery()可能会这样做,但这取决于您的所有存储过程是否将返回相同的列集。如果不是这种情况,那么最好使用直接ADO.NET并将结果放在DataSet中。