DbContext
関連するデータベース内にストアド プロシージャが存在するかどうかを確認するための拡張機能を作成しました。
public static bool StoredProcedureExists(this DbContext input, string name)
{
int exists = input.Database.ExecuteSqlCommand(string.Format("SELECT TOP 1 * FROM [sys].[objects] WHERE [type_desc] = 'SQL_STORED_PROCEDURE' AND [name] = '{0}';", name));
//return true; // if it exists, else false
}
問題は、ストアド プロシージャname
が存在するかどうかに関係なく、exists
変数 (から返されるExecSqlCommand
) に常に「-1」が含まれていることです。そのため、ストアド プロシージャがデータベースにあるかどうかを判断できません。
生成されたクエリを SQL Server Management Studio で実行すると、期待どおりに機能し、ストアド プロシージャが存在する場合は 1 行が返され、存在しない場合は行が返されません。
これを達成する方法についてアイデアを持っている人はいますか (データベースにストアド プロシージャが存在するかどうかをプログラムで判断します)。
ありがとうロブ