我有一个Employee
表,其中包含员工ID列EmpID (nvarchar(5))
。
这是我将数据插入Employee
表
Employee obj = new Employee();
obj.EmpID = ?
DBContext.Employees.InsertOnSubmit(obj);
DBContext.SubmitChanges();
我想将EmpID
的值设为
00001
00002
00003
00004
....
....
如何创建这样的自定义自定义序列?
答案 0 :(得分:3)
我建议让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!
}
}