加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:26:19 所属栏目:百科 来源:网络整理
导读:是否可以自动增加不是实体框架中主键的属性?我所拥有的是一个具有ID,但也有序列号的类: public class Maintenance{ [Key] public int ID { get; set; } public int GroupID { get; set; } public int SerialNo { get; set; } } 我有一个GroupID和SerialNo
是否可以自动增加不是实体框架中主键的属性?我所拥有的是一个具有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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读