0

我想知道是否有可能像这样自动生成一个密钥:

  • CBE_2012_1
  • CBE_2012_2
  • CBE_2012_3
  • CBE_2013_1
  • CBE_2013_2
  • CBA_2013_1
  • CBA_2013_2
  • CBC_2013_1

我现在在我的班上有这个,ID 是带有自动编号的 ID:

    [Key]
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }

但我想用数字作为键和格式:Code_Year_Id:

    [Key]
    public string Number { get; set; }
    public DateTime Date { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }

有人可以帮我吗?或者是否有人有有用的文档可以为我提供一个体面的解决方案?

在我保存一个新项目之前,我可以自己创建一个数字(在代码中),但可能有 2 个人同时保存一个新项目@,我不希望重复键出现异常..

扎科斯

4

1 回答 1

2

通常,对键使用有意义的值是个坏主意。使用唯一目的是确保引用完整性的顺序值会更好。如果不是其他原因:如果您的键不是连续的,那么当您插入新记录时,您的索引上会出现很多碎片。

如果您确实想确保获得一个唯一值,您可以创建一个保存最后一个值的 SQL 表,然后创建一个 UDF 或 sproc,它采用该表中的当前值,将其递增到下一个值,然后返回那个值。

于 2013-11-21T21:01:27.320 回答