我有一些LinqToSQL对象。 其中有一个'Binary'列,我认为它是SQL上的VarBinary(max)。如何将字节数组连接到数据库中的现有数组
每隔一段时间,我需要在特定行中将字节数组添加/连接到该列。这就是我要做的事:
void StoreBytesInDb(IEnumerable<byte> bytesToStore)
{
using (var dataBaseContext = new MyDataClasses(DatabaseInfo.ConnectionString))
{
if (this.currentObjectId == -1)
{
this.NewObjectToDatabase();
this.currentSavedBytes = new List<byte>();
}
this.CurrentObject = dataBaseContext.Objects.Single(e => e.Id_Object == this.currentObjectId);
this.currentSavedBytes.AddRange(bytesToStore);
this.CurrentObject.Bytes_Data = this.currentSavedBytes.ToArray();
dataBaseContext.SubmitChanges();
}
}
所以,你可以看到:
- 我使用LINQ“的AddRange”到保存字节(堆)。
- 然后我把它放到对象的右列中。
- 提交更改。
在低速运转。
当我每秒加速几次时会出现问题。 有时它抛出一个'System.ArgumentException'说:“具有相同密钥的项目已被添加。” 抛出异常的确切行是:
this.CurrentObject.Bytes_Data = currentSavedBytes.ToArray();
,关于如何提高这任何提示吗?
如果它是你处理更大的字节数据 - 也许将其移出DB的,保持一个参考到文件系统 - 和追加那里 - 哪个更好。另一方面,它可能因为那个'NewObjectToDatabase'而抛出(如果你也保存在那里),那只是一个猜测。 – NSGaga 2013-04-08 17:18:25
@NSGaga谢谢,这是绝对和改进:)我改变了它;但同样的问题仍然存在。我不认为这会引发我将对象保存在NewObjectToDatabase中,我的意思是:当我尝试在Bytes_Data中写入(在对象内部)时,抛出的线条为什么仅在有时才这样做? – 2013-04-08 17:40:27
我提出了一个答案,所以你可以投票等(因为它至少有助于修复它的一半以上 - 其余更容易)。另一方面 - 你可以发布你的模型,什么是PK等 - 它可能是相关的。 – NSGaga 2013-04-08 17:44:33