2017-02-13 3 views
0

私は私のストアドプロシージャは、出力パラメータを含む多くのパラメータを必要System.Data.Entity.Database.ExecuteSqlCommandSystem.Data.Entity.Database.SqlQuery特定のTSQLストアドプロシージャに基づいてExecuteSqlCommandまたはSqlQueryの呼び出しを自動的に生成する方法はありますか?

で呼び出す必要があり、多くのストアドプロシージャを持っています。パラメータの作成を手作業でコーディングすると時間がかかる可能性があり、誤っている可能性があります。

与えられたT-SQLストアドプロシージャに基づいてExecuteSqlCommandまたはSqlQueryコールを自動的に生成する方法はありますか?

.edmxモデルを使用できますが、私が知る限り、.edmxモデルでは関数のインポートが使用されています。私は直接ExecuteSqlCommandまたはSqlQuery呼び出しを行うのが好きです。

+0

答えは "いいえ" 自動的なオプションはありませんではありません。私はそれを手渡さなければならなかった。 –

答えて

0

ストアドプロシージャは互いに類似していますか?彼らは同様に選択したり参加したりしていますか?

+0

質問の主な焦点はコードジェネレータです。私の特定のシナリオにかかわらず、私はSPのためのそのようなコードジェネレータがあるかどうかを知りたい。強力な型指定されたデータセット用のコードジェネレータがありますが、それでも例外的にうまく機能しています。 –

0

完全な解決策ではありませんが、必要なストアドプロシージャのパラメータと結果情報を返すSQLクエリがいくつかあります。 T4 Template(またはこれに類するもの)を使用して、データアクセスコードを生成することができます。

ストアドプロシージャのパラメータ:

select 
    schema_name(sp.schema_id) as schema_name, 
    sp.name as procedure_name, 
    p.name as parameter_name, 
    typ.name as type_name, 
    p.max_length, 
    p.precision, 
    p.scale, 
    p.is_output 
from sys.procedures sp 
left join sys.parameters p on p.object_id = sp.object_id 
left join sys.types typ on typ.user_type_id = p.user_type_id 
order by schema_name, sp.name, p.parameter_id 

ストアドプロシージャの結果:

if serverproperty('islocaldb') is not null -- identifies sql server 2012+, which is the first version that supports dm_exec_describe_first_result_set_for_object 
or serverproperty('edition') = 'SQL Azure' -- azure sql also supports dm_exec_describe_first_result_set_for_object 
    select 
     schema_name(sp.schema_id) as schema_name, 
     sp.name as procedure_name, 
     rs.name as column_name, 
     typ.name as type_name, 
     rs.max_length, 
     rs.precision, 
     rs.scale 
    from sys.procedures sp 
    cross apply sys.dm_exec_describe_first_result_set_for_object(sp.object_id, 0) rs 
    join sys.types typ on typ.system_type_id = rs.system_type_id 
    order by schema_name, sp.name, rs.column_ordinal 
else 
    select 
     null as schema_name, 
     null as procedure_name, 
     null as column_name, 
     null as type_name, 
     null as max_length, 
     null as precision, 
     null as scale 
関連する問題