2015-08-19 2 views
0

У меня есть модель шок, который я первоначально был отмечен сНе удается вставить значение NULL в столбец «ShockId», миграция не обновляя новые атрибуты

[Key] 
[DatabaseGenerated(DatabaseGeneratedOption.None)] 
public string ShockSerial {get;set} 

С целью позволяет пользователю выбрать/создать серийные номера ,

Моя проблема теперь, когда я пытаюсь добавить новые Shocks в базу данных, они являются нулевыми; Думаю, я собираюсь добавить вход и не позволять базе данных автоматически генерировать ключи, как если бы это был «ShockId» или что-то сущность автоматически распознала бы.

Я пробовал добавлять миграции, удаляя атрибуты, обновляя базу данных, но по-прежнему сохраняет поведение без автоматического создания.

Если бы я не был далеко от моего нынешнего проекта, я бы просто начал с новых моделей. Я чувствую, что перепутал свои миграции и не правильно структурировал свою базу данных с моделей, если я изменю требуемый тег, миграция не отразит это изменение.

ответ

0

Может быть, эта ссылка поможет вам EF Code First - Cannot insert the value NULL into column

Вот код из ссылки, которые могут помочь вам:

У меня была аналогичная проблема, вызванная применением Миграции к существующим базы данных, поэтому я создал пустой миграции и использование кода SQL, вот мой пример:

public override void Up() 
{ 
    DropForeignKey("dbo.Bar", "FooId", "dbo.Foo"); 
    Sql("IF object_id(N'[dbo].[FK_Bar_Foo]', N'F') IS NOT NULL ALTER TABLE [dbo].[Bar] DROP CONSTRAINT [FK_Bar_Foo]"); 
    Sql("CREATE TABLE [dbo].[FooTemp] ([Id] int NOT NULL)"); 
    Sql("INSERT INTO [dbo].[FooTemp] ([Id]) SELECT [Id] FROM [dbo].[Foo]"); 
    Sql("DROP TABLE [dbo].[Foo]"); 
    Sql("CREATE TABLE [dbo].[Foo] ([Id] int IDENTITY (1,1) NOT NULL)"); 
    Sql("SET IDENTITY_INSERT [dbo].[Foo] ON"); 
    Sql("INSERT INTO [dbo].[Foo] ([Id]) SELECT [Id] FROM [dbo].[FooTemp]"); 
    Sql("SET IDENTITY_INSERT [dbo].[Foo] OFF"); 
    Sql("DROP TABLE [dbo].[FooTemp]"); 
    AddPrimaryKey("dbo.Foo", "Id"); 
    AddForeignKey("dbo.Bar", "FooId", "dbo.Foo", "Id"); 
} 

public override void Down() 
{ 
    DropForeignKey("dbo.Bar", "FooId", "dbo.Foo"); 
    Sql("CREATE TABLE [dbo].[FooTemp] ([Id] int NOT NULL)"); 
    Sql("INSERT INTO [dbo].[FooTemp] ([Id]) SELECT [Id] FROM [dbo].[Foo]"); 
    Sql("DROP TABLE [dbo].[Foo]"); 
    Sql("CREATE TABLE [dbo].[Foo] ([Id] int NOT NULL)"); 
    Sql("INSERT INTO [dbo].[Foo] ([Id]) SELECT [Id] FROM [dbo].[FooTemp]"); 
    Sql("DROP TABLE [dbo].[FooTemp]"); 
    AddPrimaryKey("dbo.Foo", "Id"); 
    AddForeignKey("dbo.Bar", "FooId", "dbo.Foo", "Id"); 
} 
Смежные вопросы