如何在EF Core中禁用序列号缓存

时间:2018-09-25 11:19:12

标签: entity-framework-core

我需要一个顺序的参考编号。通常我只使用Identity列,但是从SQL 2012开始,它们可以跳到下一个1000(我看到1,2,1001,2001,2002)。

通过阅读,我看到了使用序列的建议,因为在EF Core 2.1中现在很容易。问题在于它仍然有一些缓存,一次只能存储50个数字,所以我现在看到的是1、2、3、51、52。

看一下SQL文档,我可以看到您可以禁用此缓存,但我无法看到通过EF Core中的流畅API来进行缓存。

建议?

1 个答案:

答案 0 :(得分:0)

我很好奇,所以我正在寻找一种更优雅的解决方案,但与此同时...也许您可以解决这个问题。为此表创建一个表,就像这样:

public class mySequence {
    public int sequence {get; set;}
    public bool locked {get; set;}
}

在序列上创建索引(降序)。 1)锁定序列表; 2)查找“下一个”解锁序列号; 3)如果没有,则用下一个X序列号进行播种; 4)锁定“下一个”序列号; 5)解锁表; 6)在实际数据中使用序列号

必须对 some 资源具有排他性控制,以减轻冲突/重复。

嗯,更“优雅”的解决方案展现了出来...

Sequences using Fluent API