[英]Custom Auto-Generated Sequences with SQL Server
我有一个带有员工ID列EmpID (nvarchar(5))
的Employee
表。
这就是我将数据插入Employee
表的方式
Employee obj = new Employee();
obj.EmpID = ?
DBContext.Employees.InsertOnSubmit(obj);
DBContext.SubmitChanges();
我想使EmpID
的值
00001
00002
00003
00004
....
....
我如何创建这样的自定义自动生成序列?
我建议让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。被正确评论:如果您不需要数据库中的EmpID
值,那么最好的方法是只在数据库中具有ID INT IDENTITY
列,并处理Employee
类中C#代码中的EmpID
:
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!
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.