EF Core Fluent API HasData打破了自动递增主键

时间:2018-07-12 23:13:14

标签: c# entity-framework ef-fluent-api seeding ef-core-2.1

本质上,每当我使用here所示的HasData方法使用EF Core播种数据时,如果我给每个播种的实体都指定一个ID,它只会允许我播种数据。我不必这样做,因为ID对于每个条目都会自动递增。但是,当我以这种方式对数据进行种子设置(手动指定ID)时,稍后添加非种子数据会引发异常,表明给定键已存在实体。当我不进行任何数据播种时,以后添加实体将按预期工作,而自动增量将工作。

以下是一些简化的示例代码来帮助解释我的问题:

模型类:

Example model

Fluent API配置方法:

Fluent API configuration

添加新实体(使用存储库模式):

POST method

当我没有播种任何数据,但是如果播种任何数据时失败,则从Angular前端或通过Postman工作调用POST方法。调用0时,会在complete方法期间引发异常。该异常表示ID为1的实体已经存在。该错误是有道理的,因为我已将ID为1的数据作为种子。

我的主要问题是,是否存在使用自动增量ID播种数据的正确方法?也许我配置不正确,导致指定了初始ID。

感谢您的帮助。如果我需要澄清任何事情,请告诉我。 WebAPI使用.Net Core 2.1.0编写,并使用EF Core 2.1.0。

0 个答案:

没有答案