Linq to Entities & SQL Server 2012:通过字段组合插入连续数字



我使用的是:

Linq到实体和SQL Server 2012。

我需要在表格中插入连续的数字。对于表中其他字段的组合,数字必须是连续的。

这是(简化的)表格结构:

Id: uniqueidentifier
ShiftId: uniqueidentifier (NULL)
Number: bigint <-- This should be consecutive per shift 
or consecutive when ShiftId is null

我不能在连续值中有"跳跃"。

我使用ROW_NUMBER、序列、身份进行了评估,但没有什么看起来特别适合与linq一起用于实体。

最好的方法是什么?如果仅仅使用linq-to实体是不可能做到这一点的,那么在存储过程、触发器等中最好的方法是什么。?

编辑:要添加更多详细信息:该应用程序处理许多帐户。在每个账户上,一天被划分为班次。在转换期间,所有创建的订单都需要有一个连续的编号,从一开始。当轮班结束时,下一个订单(下一个轮班)将为1,一切都将重新开始。

当创建新订单时,我的流程应该找到当前账户的最大订单号,并将其增加一,然后用于订单。

我最初的想法是,如果您可以添加一个DateTime字段,您就可以创建一个视图,自动为您创建这个"数字"字段。

SELECT Id, 
ShiftId, 
DateTimeField, 
ROW_NUMBER() OVER(PARTITION BY ShiftId ORDER BY DateTimeField) AS Number

对于每个ShiftId,最早的DateTime字段将从数字变为数字1,并在没有任何间隙的情况下递增。这在你的情况下行得通吗?

最新更新