Не удается получить последний вставленный идентификатор EF core 2.2 - PullRequest
0 голосов
/ 11 марта 2019

Хотя я понимаю, что в Интернете есть много статей на эту тему, я не могу найти решение своей проблемы. Одна из причин - все статьи, которые я обнаружил, не используют асинхронную функцию. Вот моя проблема:

У меня есть сущность:

[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Url]
public string LogoUrl { get; set; }
[Required]
public string AdministratorIdentityId { get; set; }
public string Verified { get; set; }
public int AddressId { get; set; }

У меня есть следующее в моем контексте БД:

protected override void OnModelCreating(ModelBuilder model)
{
        model.Entity<RestaurantEntity>()
            .Property(p => p.Id)
            .ValueGeneratedNever();

        base.OnModelCreating(model);
}

И мой код для сохранения информации в базе данных таков:

try
{
    RestaurantEntity dbrestaurant = new RestaurantEntity();
    dbrestaurant.Name = restaurantName;
    dbrestaurant.AdministratorIdentityId = restaurantAdministrator;
    dbrestaurant.Verified = GenerateVerifiedCode();

    await _appDbContext.Restaurants.AddAsync(dbrestaurant);
    await _appDbContext.SaveChangesAsync();

    int newpk = dbrestaurant.Id;

    return newpk;
}

Моя проблема в том, что newpk ВСЕГДА 0, а в БД генерирует правильное значение. По какой-то причине ядро ​​EF не получает вставленное значение.

Это информация для получения кода:

enter image description here

Это значение БД:

enter image description here

1 Ответ

0 голосов
/ 11 марта 2019

Изменение,

[Key]
public int Id { get; set; }

на

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id {get;set;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...