1
DataTableをPOCOリストに変換しようとしています。 StackOverflowでそのトピックにいくつかの答えを見つけました。すべてがO.Kでなければなりません。私は正しい結果を得ていません。結果は5つの項目の空のリストです。したがって、DataRowからPOCOオブジェクトへのマッピングはありません。 何が間違っている可能性がありますか?Automapper POCOリストへのDataTableマップ
AutoMapperはあなたがDataReaderオブジェクトのマッピングを追加するのを忘れバージョン6.1.1 AutoMapper.Dataバージョン1.0.0
class Program
{
static void Main(string[] args)
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMissingTypeMaps = true;
cfg.CreateMap<IDataReader, Person>();
});
var mapper = config.CreateMapper();
DataTable tbl = DataGenerator.MyPersons();
var result = mapper.Map<List<Person>>(tbl.CreateDataReader());
}
}
public static class DataGenerator
{
public static DataTable MyPersons()
{
DataTable myPersonssDataTable = new DataTable();
myPersonssDataTable.Columns.Add(new DataColumn()
{
ColumnName = "FirstName",
DataType = typeof(string)
});
myPersonssDataTable.Columns.Add(new DataColumn()
{
ColumnName = "LastName",
DataType = typeof(string)
});
myPersonssDataTable.Columns.Add(new DataColumn()
{
ColumnName = "DateOfBirth",
DataType = typeof(DateTime)
});
myPersonssDataTable.Columns.Add(new DataColumn()
{
ColumnName = "JobTitle",
DataType = typeof(string)
});
myPersonssDataTable.Columns.Add(new DataColumn()
{
ColumnName = "TakenName",
DataType = typeof(string)
});
myPersonssDataTable.Columns.Add(new DataColumn()
{
ColumnName = "IsAmerican",
DataType = typeof(bool)
});
myPersonssDataTable.Rows.Add(new object[] { "Lenny", "Belardo", new DateTime(1971, 3, 24), "Pontiff", "Pius XIII", true });
myPersonssDataTable.Rows.Add(new object[] { "Angelo", "Voiello", new DateTime(1952, 11, 18), "Cardinal Secretary of State", "", false });
myPersonssDataTable.Rows.Add(new object[] { "Michael", "Spencer", new DateTime(1942, 5, 12), "Archbishop of New York", "", true });
myPersonssDataTable.Rows.Add(new object[] { "Sofia", "(Unknown)", new DateTime(1974, 7, 2), "Director of Marketing", "", false });
myPersonssDataTable.Rows.Add(new object[] { "Bernardo", "Gutierrez", new DateTime(1966, 9, 16), "Master of Ceremonies", "", false });
return myPersonssDataTable;
}
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
public string JobTitle { get; set; }
public string TakenName { get; set; }
public bool IsAmerican { get; set; }
}
cfg.AddDataReaderMapping()は私のバージョンのAutoMapperでは不明です。 私は最後のバージョンを使用します:AutoMapperはバージョン6.1.1です。AutoMapper.Dataバージョン1.0.0 –
@DieterRuh「AddDataReaderMapping」は、クラス「ConfigurationExtensions」、アセンブリ「AutoMapper.Data」に格納されている拡張機能です。あなたが 'AutoMapper.Data;を使用しているかどうかを確認してください。 – dbvega