我建议让 SQL Server 通过使用INT IDENTITY
列来处理自动递增部分。不要在您的 C# 代码中执行此操作 - 这是一项数据库任务。
对于您希望以特定的格式化方式拥有的第二列,请使用基于该标识列的计算列。
尝试这样的事情:
CREATE TABLE dbo.Employee
(ID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY CLUSTERED,
EmpID AS RIGHT('0000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED,
.... your other columns here.......
)
这样,当您将行插入表中时,您将获得:
ID EmpID
---------------
1 00001
2 00002
........
17 00017
18 00018
......
78 00078
该ID
列是您实际的主键和集群键,它体积小、速度快、永不更改 - 非常适合集群键。并且您的列EmpID
总是自动生成的,ID
并以您想要的格式化方式显示值。
更新:正如@ta.speot.is 正确评论的那样:如果您不需要EmpID
数据库中的任何值,那么最好的方法是将ID INT IDENTITY
列放在数据库中,并EmpID
在您的 C# 中处理类中的代码Employee
:
public class Employee
{
[Key]
public int ID { get; set; }
[NotMapped]
public string EmpID
{
get { return "0000" + ID.ToString(); } // do whatever you need to do here!
}
}