c# – 自动增量属性不是键

前端之家收集整理的这篇文章主要介绍了c# – 自动增量属性不是键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以自动增加不是实体框架中主键的属性?我所拥有的是一个具有ID,但也有序列号的类:
  1. public class Maintenance
  2. {
  3. [Key]
  4. public int ID { get; set; }
  5. public int GroupID { get; set; }
  6. public int SerialNo { get; set; }
  7. }@H_403_3@
  8. 我有一个GroupIDSerialNo的索引具有唯一的关系,使得组不可能具有两次相同的序列号.

  9. 我目前正在做的是在该组中检查.Max()for SerialNo.如果序列号自动递增,我会喜欢它.这可能吗?

  10. 我一直在寻找解决方案,但据我所知,它不可能有2自动递增列与实体框架,并且自动递增列将始终是PK列.

  11. 有没有办法设置自动增量,还是比使用Max()有更好的解决方案?理论上,使用Max()可能会生成2个相同的值,并且会在尝试插入时导致程序崩溃(因为唯一索引).

  12. 我先使用代码.

  13. 澄清一下:我想将ID保留为主键,并在插入时计算序列号.

  14. 更新:

  15. 我尝试在SerialNo上使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)],这导致实体框架想要将主键更改为此属性.我也尝试过[DatabaseGenerated(DatabaseGeneratedOption.Computed)],它试图在SerialNocolumn中插入NULL,而[DatabaseGenerated(DatabaseGeneratedOption.None)]试图插入0,基本上做“什么都没有”.

  16. 要求的信息:

  17. 这是表格外观的一个示例:

  18. |_ID_|_GroupID_|_SerialNo_|
  19. |  1 |    1    |    1     |
  20. |  2 |    1    |    2     |
  21. |  3 |    2    |    1     |
  22. |  4 |    1    |    3     |
  23. |  5 |    2    |    2     |@H_403_3@

解决方法

是的,你可以使用 following attribute
  1. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  2. public int SerialNo { get; set; }@H_403_3@
  3. 有关可能的数据注释的列表,请参见HERE.

猜你在找的C#相关文章