単純な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バッキングコレクションは、DBの列と同じ名前を持っていません。マップはありません。
誰でも助けてください。
あなたはIDataReaderの独自の実装を書くことができます。 SqlBulkCopyは読み取り専用でGetValue、Read、およびFieldCountの実装を呼び出すため、カスタムリーダーを作成するのは比較的簡単です。ちょっとした考え。 – TnTinMn