gpt4 book ai didi

c# - 如何使用 Automapper 将更改映射到现有集合?

转载 作者:行者123 更新时间:2023-11-30 21:59:27 25 4
gpt4 key购买 nike

我有一些相当简单的代码,可以将用户对 View 模型中集合的更改应用到模型中的集合。

public void Apply(ViewModelListItem source, ICollection<ModelListItem> dest)
{
//user added and removed an item before saving, do nothing
if (source.Insert && source.Delete) return;

//user added an item
if (source.Insert)
{
dest.Add(Mapper.Map<T>(source));
}

//user deleted an item
else if (source.Delete)
{
//Using custom Equals implementation that compares PK
dest.Remove(dest.FirstOrDefault(destItem => source.Equals(destItem)));
}

//user modified or did not alter an item
else
{
//Using custom Equals implementation that compares PK
Mapper.Map(source, dest.FirstOrDefault(destItem => source.Equals(destItem)));
}
}

...

foreach (var item in MyViewModel.MyCollection)
{
Apply(item, MyModel.MyCollection);
}

我在我的代码中的多个位置使用了这个模式,所以我一直在寻找一种以通用方式重用代码的方法。 Automapper 是否有办法简单地传递对源/目标的引用并让我在其上运行我自己的设置逻辑?如果没有,是否有任何其他方法可以使此代码通用,这样我就不必为每个新 View 模型都编写它?

最佳答案

看看AutoMapper.Collection .它自动处理集合上的所有 CRUD 操作:

Will Add/Update/Delete items from a preexisting collection object based on user defined equivalency between the collection's generic item type from the source collection and the destination collection

关于c# - 如何使用 Automapper 将更改映射到现有集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29257953/

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