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