实体框架覆盖标识列
本文关键字:覆盖标识 框架 实体 | 更新日期: 2023-09-27 18:03:12
我有一个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
首先,我不知道有什么好的解决方案。我建议您重新考虑您正在尝试做的事情,或者进一步解释为什么需要这样做。也许有更好的解决办法。对于你想要的,我所知道的唯一解决方案是丑陋的,我真的不推荐它。
- 不能使用标识(自动递增)字段。如果你把这个在你的专栏上,那你就无能为力了。你的数据库会抛出一个错误,或者忽略你给它的值。
- 你必须自己处理自动增量。有很多实现此目的的方法(将当前值存储在数据库中,执行max()查询等)。 你可能会想要重写SaveChanges()。这是一个SOPOST一下。我也不建议你这么做。
也许有人会为你提供一个非常棒的解决方案。抱歉,我知道这对你来说更像是没有答案。好运。