gpt4 book ai didi

c# - Automapper DynamicMap 随机无法映射匿名类型

转载 作者:行者123 更新时间:2023-11-30 17:49:53 27 4
gpt4 key购买 nike

Automapper (3.1.1) 随机无法映射任何数据,这是一个非常奇怪的问题。创建对象 (ProductRating) 并返回,但实际上没有映射任何数据。当这种情况发生时,我已经进入了代码,result 变量确实包含数据,但 DynamicMap 没有做它的事情。

如果我打开一个 View 并重新保存它(没有代码更改),或者如果我重新编译服务是下面的代码所在,它就会再次开始工作。也许是因为我以匿名类型嵌套了 DynamicMap 调用?

var result = _repo.Table.Where(a => a....)
.Select(a => new
{
a.ProductRating.UserId,
a.ProductRating.ProductId,
a.ProductRating.Rating,
a.ProductRating.CreatedOn,
a.Product.Name
}).ToList();

// automapper is failing to map any data here intermittently.
List<ProductRating> entityList = result.Select(a => Mapper.DynamicMap<ProductRating>(new
{
a.UserId,
a.ProductId,
a.Rating,
a.CreatedOn,
Product = Mapper.DynamicMap<Product>(new { a.ProductId, a.Name })
})).ToList();

更新 1:

我在下面进行了一些测试,嵌套的 DynamicMap 调用似乎不是问题所在。如果我重建我的解决方案并最初加载像主页一样的 View 然后使用此代码导航到 View 然后 DynamicMap 不,我现在能够始终如一地重现此问题不工作。如果我重建并最初加载与此代码直接关联的 View,那么它就可以正常工作。奇怪的东西。

var itemList = new List<ProductRating>();
result.ForEach(a =>
{
// doesn't map anything
itemList.Add(Mapper.DynamicMap<ProductRating>(new
{
a.UserId,
a.ProductId,
a.Rating,
a.CreatedOn,
// doesn't map either
Product = new Product() { Name = a.Name, ProductId = a.ProductId }
// doesn't map
//Product = Mapper.DynamicMap<Product>(new { a.ProductId, a.Name })
}));
// success
itemList.Add(new ProductRating()
{
UserId = a.UserId,
ProductId = a.ProductId,
Rating = a.Rating,
CreatedOn = a.CreatedOn,
Product = new Product() { Name = a.Name, ProductId = a.ProductId }
});
});

最佳答案

此问题不断出现并成为缺陷的根源。由于没有得到项目所有者的回应,在仔细考虑了 Automapper 和 ValueInjector 之后,我决定放弃使用所有对象到对象的映射器,而只是手动新建类的实例。该决定实际上归结为不受第三方软件的支配,无法保证修复或响应时间。

关于c# - Automapper DynamicMap 随机无法映射匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com