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

前端之家收集整理的这篇文章主要介绍了c# – 自动增量属性不是键前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以自动增加不是实体框架中主键的属性?我所拥有的是一个具有ID,但也有序列号的类:
public class Maintenance
{
    [Key]
    public int ID { get; set; }
    public int GroupID { get; set; }
    public int SerialNo { get; set; } 
}

我有一个GroupID和SerialNo的索引具有唯一的关系,使得组不可能具有两次相同的序列号.

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

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

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

我先使用代码.

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

更新:

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

要求的信息:

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

|_ID_|_GroupID_|_SerialNo_|
|  1 |    1    |    1     |
|  2 |    1    |    2     |
|  3 |    2    |    1     |
|  4 |    1    |    3     |
|  5 |    2    |    2     |

解决方法

是的,你可以使用 following attribute
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SerialNo { get; set; }

有关可能的数据注释的列表,请参见HERE.

猜你在找的C#相关文章