我正在开发一个项目,在该项目中,不是使用 Int 等原始类型作为 Id,而是使用“强类型”,如 CategoryId 对象。我想将 EntityFramework Core 与 HiLo 策略一起使用,但似乎 entityframework 只支持整数字段/属性的 Hilo。我需要知道 entityframework 是否支持强类型 ID 上的 Hilo。如果是,我应该如何配置它。提前致谢
更新:为了澄清我到底做了什么,假设有一个名为“Task”的类,包括一个名为“TaskId”的强类型 ID。我使用 Fluent API 来配置这个实体,如下所示:
class TaskConfiguration : IEntityTypeConfiguration<Task>
{
public void Configure(EntityTypeBuilder<Task> builder)
{
builder.HasKey(e => e.TaskId);
builder.Property(e => e.TaskId).HasConversion(t => t.id, id => new TaskId(id));
}
}
仍然一切都很好。但是,如果我决定对实体“任务”使用 Hi-Lo 策略,问题就开始了。我在 HasConversion() 之后使用 ForSqlServerUseSequenceHiLo() 方法并在我添加迁移时出错,表示此方法仅适用于具有整数类型的属性!我不知道它是否实用,使用带有强类型 ID 的 Hi-Lo。如果可能的话,解决方案是什么。