我正在使用这样的内存 EF Core 数据库:
var options = new DbContextOptionsBuilder<DmpContext>()
.UseInMemoryDatabase("test")
.Options;
var context = new CustomContext(options);
我正在使用 Bogus 添加一些随机数据。
var resources = new Faker<Resource>()
.RuleFor(x => x.Name, x => x.Name.FullName())
.Generate(20);
在此资源集合中,所有 id 仍然为零。
当我执行 AddRange 时,我希望生成 id:
context.Resources.AddRange(resources);
context.SaveChangesAsync();
但它们不是生成的。
System.AggregateException :发生一个或多个错误。(无法跟踪实体类型“资源”的实例,因为已经在跟踪具有与 {'ResourceId'} 相同键值的另一个实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。
所以我想,然后让我设置它们并自己制作一个自动增量机制。那行得通。
但是,当我尝试测试我的Add
方法时(这些方法插入记录)。我无法在这些方法中设置 ID,因为 ID 甚至不在界面中。我再次希望 EF 自动生成 ID,但它会尝试插入 ID 1(这已经被采用,因为我已经生成了 ID 1 直到 20)。
有谁知道如何告诉内存数据库中的 EF 核心始终自动递增它的键?