AutoMapper не создает новый Guid при отображении - PullRequest
1 голос
/ 25 сентября 2019

У меня проблемы с выяснением того, как с помощью AutoMapper вызывать "новый Guid ()".

Это моя модель:

public class Countries
{
    public Guid Id { get; set; } = new Guid();
    public string Name { get; set; }
}

А это моя модель просмотра:

public class CountriesViewModel
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

При отображении из CountryViewModel в страны идентификатор в Странах имеет значение Guid по умолчанию (равное {00000000-0000-0000-0000-000000000000}) вместо создания нового Guid.

Вот как я делаю это отображение:

public async Task<CountriesViewModel> Add(CountriesViewModel country)
{
    var mapped = _mapper.Map<CountriesViewModel, Countries>(country);

    _context.Countries.Add(mapped);

    if (await _context.SaveChangesAsync() == 1)
    {
        _mapper = _countriesConfig.CreateMapper();
        return _mapper.Map<Countries, CountriesViewModel>(mapped);
    }

    return new CountriesViewModel();
}

1 Ответ

2 голосов
/ 25 сентября 2019

Здесь вы создаете экземпляр Guid(), который создает пустой Guid, т.е. 00000000-0000-0000-0000-000000000000 каждый раз

Вы ищете Guid.NewGuid(), который создает новый guid с уникальным значением.

Попробуйте ниже

public class Countries
{
    public Guid Id { get; set; } = Guid.NewGuid();
                                  //^^^^^^^^^^This was wrong in your code
    public string Name { get; set; }
}

Для справки: Guid.NewGuid () против нового Guid ()

...