Enity Framework覆盖标识列

我有一个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。

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

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

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