我已经读过,在Entity Framework Core HiLo模式中,“Hi”部分由数据库管理,“Lo”部分由Entity Framework在内存中管理。
实体框架如何在不往返数据库的情况下生成“Lo”部分?
如何在请求之间保持“Lo”值?
最重要的是,这种模式线程安全吗?
谢谢!
答案 0 :(得分:2)
HiLo生成器偶尔会在服务器上保留一块ID,然后根据需要使用客户端上该块的ID。您只需在保留块时点击数据库,因此如果块大小为100,则每100个ID往返一次。
是的,让多个上下文同时分配ID是安全的,因为该块是由数据库服务器原子分配的。每个DbContext
实例都有自己的块。