CSV ファイルを次のクラスに正常にプルしました。
[DelimitedRecord(",")]
[IgnoreFirst(1)] // ignores first line of file, since it's a header
public class Employee {
public string EmployeeId;
public string FirstName;
public string LastName;
// etc.
}
SqlBulkCopy を使用するには、そのクラスに基づいて DataTable を作成する必要があります。いくつかの例を見つけましたが、次の方法はうまくいきません。
private static DataTable createEmptyDataTable(Type myType) {
DataTable dt = new DataTable();
foreach (PropertyInfo info in myType.GetProperties()) {
dt.Columns.Add(new DataColumn(info.Name, info.PropertyType));
}
return dt;
}
問題は myType.GetProperties() にあります。エラーはスローされませんが、何も返されません。返されるはずの PropertyInfo 配列が空です。しばらくやっていて、問題がわかりません...
編集:私はこのバリアントも使用しましたが、成功しませんでした:
private static DataTable createEmptyDataTable(Type myType) {
DataTable dt = new DataTable();
PropertyInfo[] infoArray = myType.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
foreach (PropertyInfo info in infoArray) {
dt.Columns.Add(new DataColumn(info.Name, info.PropertyType));
}
return dt;
}