Когда я передаю параметр nullable guid для хранимой процедуры в моем коде C# ниже. Я получаю исключение:Передача nullable guid в хранимую процедуру
System.Data.SqlClient.SqlException (0x80131904): Неправильный синтаксис около '@customerGuid'.
var userNameSqlParam = new SqlParameter
{
ParameterName = "userName",
Value = userName,
DbType = DbType.String
};
var customerGuidSqlParam = new SqlParameter
{
ParameterName = "customerGuid",
Value = customerGuid,
DbType = DbType.Guid
};
var rows = _dbContext.Database
.SqlQuery<CurrentUserContextWithoutCustomer>
("EXEC [dbo].[GetCurrentUserContext] @userName @customerGuid",
userNameSqlParam, customerGuidSqlParam)
.ToList();
Так что, когда я смотрю на SQL Profiler, что было названо я
exec sp_executesql
N'EXEC [dbo].[GetCurrentUserContext] @userName @customerGuid',
N'@userName nvarchar(4),@customerGuid uniqueidentifier',
@userName=N'gir1',@customerGuid=default
Я вижу по умолчанию на конце запроса. Это порождает проблему. Существует заголовок хранимой процедуры
ALTER PROCEDURE [dbo].[GetCurrentUserContext]
@userName nvarchar(100),
@customerGuid uniqueidentifier
AS
Как я могу передать NULLABLE GUID в SQL в качестве параметра хранимой процедуры.
Нет, всего лишь мгновение – Jacek
Вы должны запятнать отдельные параметры в инструкции 'EXEC'. –