Entity framework 如何将IDENTITY_INSERT设置为ON?

Entity framework 如何将IDENTITY_INSERT设置为ON?,entity-framework,entity-framework-4,Entity Framework,Entity Framework 4,我想为person表设置SocialSecurityNumber键[Key]可以工作,但该键的值是由数据库生成的,我希望我的给定值能持久保存在数据库中,所以我使用了 [数据库生成(DatabaseGeneratedOption.None)]。现在,当我尝试Add()数据时,我得到了这个错误 那么,如何通过使用代码优先、Fluent API或注释将IDENTITY\u INSERT设置为ON 下面是我的模型课 public class Person {

我想为
person
表设置
SocialSecurityNumber
键<代码>[Key]可以工作,但该键的值是由数据库生成的,我希望我的给定值能持久保存在数据库中,所以我使用了
[数据库生成(DatabaseGeneratedOption.None)]
。现在,当我尝试
Add()
数据时,我得到了这个错误

那么,如何通过使用代码优先、Fluent API或注释将IDENTITY\u INSERT设置为ON

下面是我的模型课

  public class Person
        {
            [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
            public int SocialSecurityNumber { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }

        }

问题已经解决了。在评论中,@Tim问我是否使用了迁移。事实上,这是我在下一次尝试中没有做的步骤。我只是添加了另一个类,并没有将其设置为
[KEY]
,而是使用了完整的注释
[KEY,DatabaseGenerated(DatabaseGeneratedOption.None)]
,我不必使用迁移,这很有效。正如以前的问题是由
SocialSecurityNumber
being
identity
引起的,但现在使用这种方法,它不再是
identity
,因此identity\u INSERT(仍然关闭)不适用于此。我可以更改值。

Offtopic,但除非您想处理大量前导零问题,否则不要将SSN存储为整数。这是一个现有数据库还是您先使用代码生成的?@Dismissible no现有数据库,首先使用代码生成您是否在没有DatabaseGenerated选项的情况下生成了一次数据库。无选项,然后您是否更改了代码?更改代码后是否生成了新数据库?您是否使用迁移来更改它?您能否在数据库中确认SocialSecurityNumber字段不再设置为标识(我猜它仍然是标识)是的,我确实使用了迁移。而且做了你提到的一切。SocialSecurityNumber字段是一个标识@提姆