2015-08-19 72 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"); 
}