[英]How to concatenate a byte array into an existing one inside a Database
我有一些LinqToSQL對象。 其中之一具有“二進制”列,我認為它是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();
}
}
因此,如您所見:
低速運行。
當我每秒加快速度幾次時,就會出現問題。 有時會拋出“ System.ArgumentException”,說:“已經添加了具有相同鍵的項。” 引發異常的確切行是:
this.CurrentObject.Bytes_Data = currentSavedBytes.ToArray();
關於如何改善這一點的任何提示?
如果您要處理的是更大的字節數據-也許將其移出Db,將引用保留到文件系統上-並附加在那里-更好。
另一方面-只是一個主意...
currentSavedBytes
為什么將其保留為成員? 可能是一個並發性問題(如果共享)-嘗試在方法范圍內移動它。
這些都不是最優的。
我建議您:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.