0

я эта функция автоматически генерируется EF, который вызывает мою хранимую процедуру передавая ей байт []:Как передать байт [] для хранимой процедуры с помощью Entity Framework

public virtual ObjectResult<string> IPv6Country_Get(byte[] ipBytes) 
{ 
    var ipBytesParameter = ipBytes != null ? 
     new ObjectParameter("ipBytes", ipBytes) : 
     new ObjectParameter("ipBytes", typeof(byte[])); 

    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("IPv6Country_Get", ipBytesParameter); 
} 

Моя хранимая процедура:

CREATE Procedure [dbo].[IPv6Country_Get] 
(
    @ipBytes varbinary 
) 
AS 
    SELECT 
     [countrySHORT] AS Country 
    FROM 
     [IPv6Country] 
    WHERE 
     @ipBytes >= [ipFROM] AND 
     @ipBytes <= [ipTO] 

RETURN 0 

Когда функция EF вызывается, хранимая процедура получает только первый байт массива в @ipBytes. Что мне нужно изменить, чтобы получить полный байт []?

+1

вы должны дать VARBINARY размер больше или равна длине вашего параметра .. '@ipBytes VARBINARY (макс)', например. если длина не указана, длина по умолчанию составляет 1 https://msdn.microsoft.com/en-us/library/ms188362.aspx – JamieD77

ответ

0

Просто добавьте ДЛИНА VARBINARY

CREATE Procedure [dbo].[IPv6Country_Get] 
(
    @ipBytes varbinary(max) 
) 
Смежные вопросы