如何仅在满足特定条件时才自动增加组合键Id
本文关键字:增加 组合 Id 何仅 满足 特定条件 | 更新日期: 2023-09-27 18:06:43
我有一个代码优先MVC 5项目与一个模型,有一个复合键:
public class XYZ
{
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
//For reporting purposes.
[Key]
[Column(Order = 2)]
public int Version { get; set; }
我正在努力跟踪每个XZY
的版本。我只希望Id
属性在版本为1时递增,否则向表中添加具有相同Id号和递增版本的新行。
我不知道如何获得Id自动增量只有当一个新的XYZ
被创建,而不是一个新的版本。关于如何去获得Id自动增加只有当我想要一个新的XYZ
,而不是一个不同的版本的建议?
版本控制的目的是跟踪不同的条目版本,以便可以回滚历史。我目前的一个问题是,这个项目已经进行了一半,由于糟糕的设计和/或缺乏知识(之前没有人做过代码优先的web开发),我不愿意改变数据库的组织方式。
有用的项目信息:Visual Studio 2013, SQL Server 2012, ASP。Net MVC 5 c# .
不能使用IDENTITY
列。您可以将SEQUENCE
与手动T-SQL代码一起使用,但这很繁琐,并且序列是非事务的。
可能,您将不得不完全放弃自动生成的标识方案,并通过查询先前的最大ID来自己生成ID。注意,这将引入与许多并发插入相关的争用点。
还有其他手动生成ID的方案。也许值得做些研究