Entity framework 4 使用实体框架调用具有固定长度二进制参数的存储过程

Entity framework 4 使用实体框架调用具有固定长度二进制参数的存储过程,entity-framework-4,Entity Framework 4,我在使用实体框架调用具有固定长度二进制参数的存储过程时遇到问题。不管我使用什么大小的字节数组来调用函数import,最终都会用8000字节的数据调用存储过程。举个例子,这是我正在使用的代码 byte[] cookie = new byte[32]; byte[] data = new byte[2]; entities.Insert("param1", "param2", cookie, data); 参数为nvarchar(50),nvarchar(50),binary(32),v

我在使用实体框架调用具有固定长度二进制参数的存储过程时遇到问题。不管我使用什么大小的字节数组来调用函数import,最终都会用8000字节的数据调用存储过程。举个例子,这是我正在使用的代码

byte[] cookie = new byte[32];  
 byte[] data = new byte[2];  
entities.Insert("param1", "param2", cookie, data);
参数为
nvarchar(50)
nvarchar(50)
binary(32)
varbinary(2000)

当我通过SQL分析器运行代码时,我得到了这个结果

exec [dbo].[Insert] @param1=N'param1',@param2=N'param2',@cookie=0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
[因16000个零而剪断]

,@data=0x0000
除了
二进制(32)
cookie之外,所有参数都通过了ok。
varbinary(2000)
似乎工作正常,并且保持了正确的长度


是否有办法防止将额外数据发送到SQL server?这似乎是对网络资源的巨大浪费。

EF 4总是使用较大的参数,因为使用param size=data size主要意味着查询不能与新的参数值一起重复使用,因此SQL无法为您缓存查询。换句话说,如果您的数据大小发生变化,那么它现在所做的总体效率可能比使用更小的参数更高


如果数据大小从未更改,请使用其他列宽。

使用varbinary而不是binary。对我有帮助