Winforms アプリには、ローカル ファイル システム (またはネットワーク上の場所) から何千ものファイルを読み取り、それらをデータベースに格納するという要件があります。
ファイルをロードする最も効率的な方法は何でしょうか? 合計で数ギガバイトのデータが存在する可能性があります。
File.ReadAllBytes
は現在使用されていますが、コンピューターのメモリが使い果たされると、アプリケーションは最終的にロックアップします。
現在のコードは、バイナリ データの読み取りに使用されるファイル パスを含むテーブルをループします。
protected CustomFile ConvertFile(string path)
{
try
{
byte[] file = File.ReadAllBytes(path);
return new CustomFile { FileValue = file };
}
catch
{
return null;
}
}
データは、NHibernate を ORM として使用してデータベース (SQL Server 2008 R2 または 2012) に保存されます。