C# Enity框架覆盖标识列
我有一个代码第一EF类,如下所示:C# Enity框架覆盖标识列,c#,entity-framework,C#,Entity Framework,我有一个代码第一EF类,如下所示: public class Event { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int ID { get; set; } /* snip */ } 我希望发生的是,当ID属性为null或0时,数据库将为其生成一个ID值,但是,如果我显式地将此值设置为newEvent.ID=10000000,它将使用该值作为ID列,
public class Event
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
/* snip */
}
我希望发生的是,当ID属性为null或0时,数据库将为其生成一个ID值,但是,如果我显式地将此值设置为
newEvent.ID=10000000
,它将使用该值作为ID列,当前这样做将产生下一个可用ID。首先,我不知道有什么好的解决方案。我建议你重新思考你想做什么,或者进一步解释你为什么需要这样做。也许有更好的解决办法。我所知道的解决你想要的东西的唯一办法是丑陋,我真的不能推荐它
也许有人会为你提供一个非常棒的解决方案。对不起,我知道这对你来说更像是一个无法回答的问题。祝你好运。谢谢你的意见,我也不想这样做。这背后的思想是实现PUT-HTTP方法(),其中,如果为资源(例如)发送PUT请求,则应在该地址创建资源。也许我误解了这一点,我会这样做:不要使用自动递增字段,而是创建一个UserID字段(或其他任何字段),并在该字段上设置值。然后手动为不提供该字段的对象生成ID?这是您的选择。可以手动设置,也可以将其设置为与自动递增字段相同。这是假设您甚至需要允许用户指定其ID。如中所示,改为(example.com/resource/MyUserName),在这种情况下,您只有一个自动递增字段,甚至不需要手动填充ID。hmmmm有趣的想法,我将看看我能做些什么,感谢您的输入:)