1

私はすでにSQLDMOに基づくコードジェネレーターを持っています。これは、SQL Server 2008データベースによるストアドプロシージャのC#関数を書き込みます。ただし、現在、コードジェネレーターは、入力パラメーターと出力パラメーターを持つストアドプロシージャのみを処理できます。複数のレコードを返すストアドプロシージャの場合、コードジェネレーターは、それぞれが出力レコードを表す行を含むデータテーブルを返します。

SQL DMOを使用して、ストアドプロシージャの出力が次の場合にストアドプロシージャによって返されるフィールドを決定する方法はありselect * from Member where MemberID=1ますか?

ありがとう

4

1 に答える 1

1

DMOはSQLServerに格納されているメタ情報に依存しており、SPの結果セットの説明はそのように格納されていないため(私が知る限り)、これをDMOで行うことはできないと思います。

ただし、実行できることは、ジェネレーターにトランザクション内のストアドプロシージャを実行させ、結果のSqlDataReaderを分析することです。GetName()、GetFieldType()、およびGetSchemaTable()メソッドを見て、結果クラスを作成します。

実行後、トランザクションをロールバックします(SPがデータベースに変更を加えた場合)。

また、 MSDNはDMOが将来サポートされなくなると述べているため、ジェネレーターをSMOにアップグレードすることを検討することもできます。

于 2011-03-09T05:53:28.107 に答える