如何找出哪个记录​​ 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