gpt4 book ai didi

entity-framework - EF Core Add 函数返回负 id

转载 作者:行者123 更新时间:2023-12-03 11:01:43 29 4
gpt4 key购买 nike

今天,当我尝试保存实体并在 EF Core 中返回其 id 时,我注意到了一件奇怪的事情

前:
The Id is 0 before it was added to database
后:
Now the id has been changed to a negative value

我在考虑是否是在调用 saveChanges() 之前,但它可以与具有类似设置的另一个实体一起使用。

ps:最后我使用工作单元保存所有更改。

原因是什么?

最佳答案

显然,这不是错误而是功能:https://github.com/aspnet/EntityFrameworkCore/issues/6147

像这样覆盖这种行为并不难:

 public class IntValueGenerator : TemporaryNumberValueGenerator<int>
{
private int _current = 0;

public override int Next(EntityEntry entry)
{
return Interlocked.Increment(ref _current);
}
}

然后在这里引用自定义值生成器:
public class CustomContext: DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var type in modelBuilder.Model.GetEntityTypes().Select(c => c.ClrType))
{
modelBuilder.Entity(type, b =>
{
b.Property("Id").HasValueGenerator<IntValueGenerator>();
});
}
base.OnModelCreating(modelBuilder);
}
}

这将导致临时 ID 从“1”递增,但是,在尝试保存时需要更多的努力来防止 key 冲突。

关于entity-framework - EF Core Add 函数返回负 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41732585/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com