- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我正在尝试使用 nhibernate 来调用保存图像的存储过程。我的问题是查询失败并出现此错误:
The length of the byte[] value exceeds the length configured in the mapping/parameter.
这是我将参数附加到 ISQLQuery
的地方.参数是一个 Dictionary<string, object>
.
public void Execute()
{
string sql = BuildSprocDefinition();
var query = Session.CreateSQLQuery(sql);
foreach (var parameter in Parameters)
{
if (parameter.Value is int)
query.SetParameter<int>(parameter.Key, (int)parameter.Value);
else if (parameter.Value is long)
query.SetParameter<long>(parameter.Key, (long)parameter.Value);
else if (parameter.Value is bool)
query.SetParameter<bool>(parameter.Key, (bool)parameter.Value);
else if (parameter.Value is byte[])
query.SetBinary(parameter.Key, (byte[])parameter.Value);
else
query.SetParameter(parameter.Key, parameter.Value);
}
using (var tx = Session.BeginTransaction())
{
query.ExecuteUpdate();
Session.Flush();
tx.Commit();
}
}
protected string BuildSprocDefinition()
{
StringBuilder sql = new StringBuilder(String.Format("exec {0} ", storedProcName));
foreach (var parameter in Parameters)
{
sql.Append(String.Format(":{0}, ", parameter.Key));
}
if (sql.ToString().EndsWith(", "))
{
sql = sql.Remove(sql.Length - 2, 2);
}
return sql.ToString();
}
在数据库中,我的参数类型是varbinary(max)
我正在尝试发送一个“byte[]”作为数据。
我尝试使用特定的 SetBinary
然而这失败了。所有其他数据类型似乎都有效。
我也试过query.SetParameter<byte[]>(parameter.Key, (byte[])parameter.Value);
有同样的错误。
最佳答案
这是一个有点老的问题,但我把我的答案留给新的搜索者。
对于 byte[] 参数你可以这样指定长度
query.SetParameter(parameter.Key, parameter.Value, NHibernate.Type.TypeFactory.GetBinaryType(((byte[])parameter.Value).Length));
你需要确保过程参数有足够的长度
关于带有 byte[] 参数的 NHibernate ISQLQuery 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373698/
我使用的是 NHibernate 2.1.2.400,但我遇到了 ISQLQuery 查询问题。 我在这里使用 ISQLQuery 的原因是这个查询使用了一个表,我没有在 NHibernate 中为其
我正在使用 ISqlQuery Nhibernate 的接口(interface)以在数据库上触发 SQL 查询。以下是场景。我的领域模型有一个属性: public virtual Datetime
因此,我正在尝试使用 nhibernate 来调用保存图像的存储过程。我的问题是查询失败并出现此错误: The length of the byte[] value exceeds the lengt
因此,我正在尝试使用 nhibernate 来调用保存图像的存储过程。我的问题是查询失败并出现此错误: The length of the byte[] value exceeds the lengt
TLDR: The following code is run in the different databases, Oracle: select sysdate from dual SQLite
我是一名优秀的程序员,十分优秀!