雪花 id
使用开源项目 RobThree/IdGen
# 添加包引用
dotnet add package IdGen
// 简单使用
using IdGen;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var generator = new IdGenerator(0);
var id = generator.CreateId();
// Example id: 862817670527975424
}
}
// 结合 ef 使用
public abstract class DbContextBase : DbContext {
public override int SaveChanges()
{
AddEntityId();
return base.SaveChanges();
}
private void AddEntityId()
{
foreach (var entry in ChangeTracker.Entries<EntityBase>())
{
if (entry.State == EntityState.Added)
{
entry.Entity.Id = entry.Entity.Id > 0
? entry.Entity.Id
: new IdGenerator(0).CreateId();
}
}
}
}