我試圖將文件名列表插入到簡單的Sql Server表中。嘗試將.NET字符串[]映射到FastMember對象,但它出錯/未映射
我試圖利用SqlBulkCopy和@markgravell's FastMember庫,正如其他SO答案所建議的。
public async Task AddFileNamesAsync(string[] fileNames)
{
fileNames.ShouldNotBeNull();
using (var bulkCopy = new SqlBulkCopy(ConnectionString))
{
using (var reader = ObjectReader.Create(fileNames))
{
bulkCopy.DestinationTableName = "FileNames";
bulkCopy.ColumnMappings.Add("value", "FileName");
await bulkCopy.WriteToServerAsync(reader)
.ConfigureAwait(false);
}
}
}
CREATE TABLE [dbo].[FileNames](
[FileNameId] [int] IDENTITY(1,1) NOT NULL,
[FileName] [varchar](500) NOT NULL
所以我覺得這是一個映射問題,要麼: - FastMember無法映射到一些內部後盾收集 - 該FastMember後盾集合並不具有相同的名稱作爲數據庫列,因此它可以地圖。
誰能幫助嗎?
您可以編寫自己的IDataReader實現。 SqlBulkCopy只調用閱讀器上的GetValue,Read和FieldCount實現,因此編寫自定義閱讀器相對容易。只是一個想法。 – TnTinMn