0

LinqToExcelを使用して、大きなExcelデータシートをSQLServerデータベーステーブルEmployees2にインポートしています。EF4を使用しています。Excel(DOBおよびその他の多く)の日付フィールドは「MMddyyyy」形式です。Excelには多くのフィールドがありますが、ここでは1つのマッピングを示しています。


var excel = new ExcelQueryFactory(excelPath);
excel.AddMapping<Employee2>(x => x.DOB, "DOB", 
s => String.IsNullOrEmpty(s) ? DateTime.MinValue : 
DateTime.ParseExact(s, @"MMddyyyy", CultureInfo.CurrentCulture.DateTimeFormat));

var employees = excel.Worksheet<Employee2>("Sheet1").ToList();
employees.ForEach(e => context.Employee2.AddObject(e));
context.SaveChanges();

コードは例外「文字列が有効な日時として認識されませんでした」をスローします。

このコード行:var employees = excel.Worksheet( "Sheet1")。ToList();

私の質問は、どのレコードが例外を正確に引き起こしているのかをキャプチャするにはどうすればよいですか?

例外は、どのレコードまたはどのフィールドでさえも言いません。

変換が正常であることを確認するために、コマンドウィンドウで次のコマンドを実行しました。

DateTime.ParseExact("08012012", "MMddyyyy", CultureInfo.CurrentCulture.DateTimeFormat)

アップデート:

自分で解決策を見つけました: EF例外:文字列またはバイナリデータが切り捨てられます。ステートメントは終了されました。?

4

1 に答える 1

1

LinqToExcelのソースコードをダウンロードし、ソースコードを使用してクエリを再実行する必要があります。次に、例外を中断して、問題の原因となっている実際の行と値を確認できます。

于 2012-11-13T19:56:48.710 に答える