【发布时间】:2016-07-06 20:35:53
【问题描述】:
我想在格式为 FOO-BAR-[标识号] 的表中有一个主键列,例如:
FOO-BAR-1
FOO-BAR-2
FOO-BAR-3
FOO-BAR-4
FOO-BAR-5
SQL Server 可以做到这一点吗?还是我必须使用 C# 来管理序列?如果是这种情况,我怎样才能使用 EntityFramwork 获得下一个 [identity number] 部分?
谢谢
编辑:
我需要这样做是因为此列表示发送给客户的通知的唯一标识符。
- FOO 将是一个常量字符串
- BAR 将根据通知的类型(检测、警告或强制执行)而有所不同
那么只有一个 int 标识列并在 C# 中的业务逻辑层中附加值会更好吗?
【问题讨论】:
-
将 foo-bar 添加到主键可能毫无意义!你是说字符串是不变的吗?
-
字符串会根据记录的类型而有所不同。例如 Foo-CategoryA-1 Foo-CategoryB-2 等
-
为什么不将字符串作为另一列?
-
如果您想将主列的第一部分设为常量(FOO-BAR-),您至少可以收到此表的性能问题。如果某些业务逻辑需要这个,您可以在此表中设置 int identity 主键,并在业务层将常量添加到该键中。
-
我很想将标识字段保持原样,并可能查看计算列或计算字段以将您的前缀添加到标识列。
标签: c# sql sql-server identity-column