Я написал расширение 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 работает должным образом, возвращая одну строку, если хранимая процедура существует, и никаких строк, если нет.
Есть ли у кого-нибудь идеи о том, как этого добиться (программно определить, существует ли хранимая процедура с базой данных)?
Спасибо, Роб.
sys.objects
. Ваш запрос будет легче читать и понимать, если вы используетеSELECT .. FROM sys.procedures WHERE ....
- person marc_s   schedule 04.09.2013