EF Code First Auto生成列ID

时间:2013-11-14 10:58:38

标签: c# entity-framework ef-code-first code-first

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

  • 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个人同时保存一个新项目,我不希望在重复键上出现异常..

Zarkos

1 个答案:

答案 0 :(得分:2)

通常,为密钥使用有意义的值是个坏主意。使用顺序值会更好,他的唯一目的是确保参照完整性。如果不是出于其他原因:如果您的密钥不是顺序的,那么当您插入新记录时,您将在索引上获得大量碎片。

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