【发布时间】:2015-01-09 09:55:38
【问题描述】:
是否可以自动增加不是实体框架中主键的属性?我所拥有的是一个有 ID 和序列号的类:
public class Maintenance
{
[Key]
public int ID { get; set; }
public int GroupID { get; set; }
public int SerialNo { get; set; }
}
我在GroupID 和SerialNo 上有一个具有唯一关系的索引,这使得一个组不可能有两次相同的序列号。
我目前正在做的是在该组中检查.Max() 中的SerialNo。但是,如果序列号自动增加,我会喜欢它。这可能吗?
我一直在寻找解决方案,但据我了解,实体框架不可能有 2 个自动递增列,并且自动递增列将始终是 PK 列。
有没有办法设置自动增量,或者有没有比使用Max() 更好的解决方案?使用Max() 理论上可能会产生两个相同的值,并会导致程序在尝试插入时崩溃(因为唯一索引)。
我先使用代码。
澄清一下:我想保留 ID 作为主键,并在插入时计算序列号。
更新:
我尝试在SerialNo 上使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)],这导致实体框架想要更改此属性的主键。我也试过[DatabaseGenerated(DatabaseGeneratedOption.Computed)],它试图将NULL插入SerialNo列,[DatabaseGenerated(DatabaseGeneratedOption.None)]试图插入0,基本上什么都不做。
要求的信息:
这是表格外观的示例:
|_ID_|_GroupID_|_SerialNo_|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 1 | 3 |
| 5 | 2 | 2 |
【问题讨论】:
-
您找到解决方案了吗?我有同样的问题/问题...
-
不,抱歉@Mike 我没有。我还在用
.Max()
标签: c# entity-framework ef-code-first