Automapper Collection Mappings: как узнать, обновлен или создан объект - PullRequest
0 голосов
/ 28 октября 2019

У меня есть следующий код

        public class AAA
        {
            public int Id { get; set; }

        }

        public class BBB
        {
            public int Id { get; set; }

            public int UpdatedOrCreated { get; set; }
        }


        [TestMethod]
        public void MappingTest2()
        {

            var _mapperConfiguration = new MapperConfiguration(cfg =>
            {
                cfg.AddCollectionMappers();

                cfg.CreateMap<AAA, BBB>(MemberList.Destination)
                .EqualityComparison((a, b) => a.Id == b.Id)
                .ForMember(dest => dest.Id, src => src.MapFrom(m => m.Id))
                .ForMember(dest => dest.UpdatedOrCreated, /* set value 2 for Updated or 3 for Created */)
                .ForAllOtherMembers(m => m.Ignore());
            });

            _mapperConfiguration.AssertConfigurationIsValid();
            var mapper = _mapperConfiguration.CreateMapper();

            var varin = new List<AAA>
            {
                new AAA
                {
                    Id = 1,

                },
                new AAA
                {
                    Id = 2,

                }
            };

            var varout = new List<BBB>
            {
                new BBB
                {
                    Id = 1,

                }
            };


            var ttt = mapper.Map(varin, varout);

            ttt.Should().HaveCount(2);

            ttt[0].Id.Should().Be(1);
            ttt[0].UpdatedOrCreated.Should().Be(2);

            ttt[1].Id.Should().Be(2);
            ttt[1].UpdatedOrCreated.Should().Be(3);
        }

Я использую расширения Automapper Collection и хочу установить поле "UpdaterOrCreated" на основе создания нового объекта или обновления существующего объекта. Я не нашел способ сделать это.

1 Ответ

0 голосов
/ 28 октября 2019
public class AAA
{
    public int Id { get; set; }
    public string ValueA { get; set; }
}

public class BBB
{
    public int UpdatedOrCreated { get; set; } = 2;
    public int Id { get; set; }
    public string ValueA { get; set; }
}

public class CustomList : List<BBB>
{
    public new void Add(BBB item)
    {
        item.UpdatedOrCreated = 3;
        base.Add(item);
    }
}
var varout = new CustomList
{
    new BBB
    {
        Id = 1,
        ValueA = "bang"
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...