我有一个表,可以作为外部进程的队列。应用程序需要允许对队列进行重新排序。我正在构建一个使用EF Core与sql数据库接口的asp.net核心应用程序。我正在使用代码优先方法。我添加了一个名为QueueOrder的字段。我已经考虑过各种方法,但对于该用例似乎没有任何作用。
一种方法是将QueueOrder字段默认为与Id字段相同。 Id是一个整数序列,对于每个插入的行,该序列递增1,因此应该可以用作队列顺序的起点。然后,当用户重新排序时,我可以通过交换QueueOrder值来更新该字段。
使用“实体框架代码优先”实现此目标的最佳方法是什么?我已经阅读了默认值,生成的值,备用键和序列文档,似乎没有什么适合我的用例。 EF不允许我添加序列,因为该表已存在。我尝试使用默认值,但是您不能在其中使用列名。您只能使用常量和常量表达式。
我无法使用备用密钥,因为EF不允许我修改密钥。显然,我可以将字段指定为GeneratedValue,然后使用触发器,但是,我看不到有任何方法可以先使用代码指定触发器。
modelBuilder.Entity<JobQueue>(b =>
{
b.Property(j => j.QueueOrder)
.HasDefaultValueSql("Id"); //This fails
});
首先有一种支持代码的方法吗?