我试图将文件名列表插入到简单的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