无法检索上次插入的ID EF core 2.2

时间:2019-03-11 04:41:07

标签: c# entity-framework ef-code-first ef-core-2.2

虽然我了解在线上有很多关于此的文章,但似乎找不到解决我问题的方法。原因之一是我发现的所有文章都没有使用异步功能。这是我的问题:

我有实体:

[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,而​​在DB中会生成适当的值。由于某些原因,EF核心无法检索插入的值。

这是代码检索信息:

enter image description here

这是数据库值:

enter image description here

1 个答案:

答案 0 :(得分:0)

更改

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

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id {get;set;}