如何找出哪个记录 Automapper 出错了?
How to Find Out Which Record Automapper Errors Out On?
我正在使用自动映射器。代码看起来像这样:
var processedRecords = await queriedRecords.Project(x =>
Mapper.Map<BsonDocument, RecordViewModel>(x)).ToListAsync();
我的问题是我无法将 System.Diagnostics.Debug.WriteLine() 放入地图定义中。有什么方法可以知道哪个记录自动映射器出错了?我一直这样做的方式是放置一个断点并单击继续,但现在我正在使用一个包含数百万条记录的数据库,所以显然这是不切实际的。
异常是 "Object reference not set to an instance of an object.",我认为这意味着该对象没有我试图映射的 属性,但它与 q 无关。对这里的理论更感兴趣。
好吧,你 可以 实际上在你的 lambda 中放一个 Debug.WriteLine()
。简单地把它变成一个块而不是一个表达式:
var processedRecords = await queriedRecords.Project(x =>
{
System.Diagnostics.Debug.WriteLine(x);
return Mapper.Map<BsonDocument, RecordViewModel>(x);
}).ToListAsync();
如果您现在愿意,您还可以在 Mapper.Map<,>()
调用周围放置一个 try
/catch
。
我正在使用自动映射器。代码看起来像这样:
var processedRecords = await queriedRecords.Project(x =>
Mapper.Map<BsonDocument, RecordViewModel>(x)).ToListAsync();
我的问题是我无法将 System.Diagnostics.Debug.WriteLine() 放入地图定义中。有什么方法可以知道哪个记录自动映射器出错了?我一直这样做的方式是放置一个断点并单击继续,但现在我正在使用一个包含数百万条记录的数据库,所以显然这是不切实际的。
异常是 "Object reference not set to an instance of an object.",我认为这意味着该对象没有我试图映射的 属性,但它与 q 无关。对这里的理论更感兴趣。
好吧,你 可以 实际上在你的 lambda 中放一个 Debug.WriteLine()
。简单地把它变成一个块而不是一个表达式:
var processedRecords = await queriedRecords.Project(x =>
{
System.Diagnostics.Debug.WriteLine(x);
return Mapper.Map<BsonDocument, RecordViewModel>(x);
}).ToListAsync();
如果您现在愿意,您还可以在 Mapper.Map<,>()
调用周围放置一个 try
/catch
。