我有一些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