3

我有一个 Code First EF 类,如下所示:

public class Event
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    /* snip */
}

我想要发生的是当 ID 属性为 null 或 0 时,数据库将为它生成一个 ID 值,但是如果我明确设置这个值newEvent.ID=10000000,它将使用它作为 ID 列,目前这样做会导致下一个可用的 ID。

4

1 回答 1

1

首先,我不知道有什么好的解决方案。我建议你重新考虑你想要做什么,或者进一步解释你为什么需要这样做。可能有更好的解决方案。我知道你想要的唯一解决方案是丑陋的,我不能真正推荐它。

  1. 您不能使用标识(自动增量)字段。如果你把它放在你的专栏上,那么你就无能为力了。你的数据库要么抛出错误,要么忽略你给它的值。
  2. 您必须自己处理自动增量。有很多方法可以做到这一点(将当前值存储在数据库中,执行 max() 查询等)。
  3. 您可能很想覆盖 SaveChanges()。这是一个关于此的 SO POST。我真的不建议你这样做。

也许有人会为您提供一个非常棒的解决方案。对不起,我知道这对你来说更像是一个非答案。祝你好运。

于 2013-03-09T21:20:25.587 回答