Merge pull request #9805 from nzdev/v8/feature/nucache-perf-sql-bulk-fixes
Support bulk insert of binary data into SQL CE
This commit is contained in:
@@ -28,11 +28,13 @@ namespace Umbraco.Core.Persistence.Dtos
|
||||
[NullSetting(NullSetting = NullSettings.Null)]
|
||||
public string Data { get; set; }
|
||||
|
||||
[Column("rv")]
|
||||
public long Rv { get; set; }
|
||||
|
||||
[Column("dataRaw")]
|
||||
[NullSetting(NullSetting = NullSettings.Null)]
|
||||
public byte[] RawData { get; set; }
|
||||
|
||||
[Column("rv")]
|
||||
public long Rv { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Data.SqlServerCe;
|
||||
using System.Data.SqlTypes;
|
||||
using System.Linq;
|
||||
using NPoco;
|
||||
using Umbraco.Core.Persistence.SqlSyntax;
|
||||
@@ -210,7 +211,15 @@ namespace Umbraco.Core.Persistence
|
||||
if (IncludeColumn(pocoData, columns[i]))
|
||||
{
|
||||
var val = columns[i].Value.GetValue(record);
|
||||
updatableRecord.SetValue(i, val);
|
||||
if (val is byte[])
|
||||
{
|
||||
var bytes = val as byte[];
|
||||
updatableRecord.SetSqlBinary(i, new SqlBinary(bytes));
|
||||
}
|
||||
else
|
||||
{
|
||||
updatableRecord.SetValue(i, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
resultSet.Insert(updatableRecord);
|
||||
|
||||
@@ -261,6 +261,13 @@ where table_name=@0 and column_name=@1", tableName, columnName).FirstOrDefault()
|
||||
return "NTEXT";
|
||||
return base.GetSpecialDbType(dbTypes);
|
||||
}
|
||||
|
||||
public override SqlDbType GetSqlDbType(DbType dbType)
|
||||
{
|
||||
if (DbType.Binary == dbType)
|
||||
{
|
||||
return SqlDbType.Image;
|
||||
}
|
||||
return base.GetSqlDbType(dbType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user