我使用Asp.net mvc 5和EF 6製作一個網絡應用程序。我開始與互聯網的應用程序模板,並添加這些類:實體框架6 Guid生成null?
public class Article
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
public string Tags { get; set; }
public string Name { get; set; }
public string Link { get; set; }
public string HtmlContent { get; set; }
[ForeignKey("ListaId")]
public Lista Lista { get; set; }
public Guid ListaId { get; set; }
}
public class List
{
public string Name { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
public int Status { get; set; }
public virtual ApplicationUser User { get; set; }
public string ApplicationUserId { get; set; }
public string Tags { get; set; }
}
但每次的NuGet包管理器更新數據庫,並運行種子的方法時,它試圖插入在數據庫中的文章下破壞。 這裏是在configuration.cs
context.Lists.AddOrUpdate(new Lista
{
Name = "Technology",
ApplicationUserId = "f06b0d2e-2088-4cd7-8b1c-4fcad5619f3c",
Status = 1,
Tags = "Tech,News"
});
context.SaveChanges();
Lista l1 = context.Lists.Where(x => x.Status == 1).First();
context.Articles.AddOrUpdate(new Article
{
ListaId = l1.ID,
Link = "www.abc.com",
Name = "ABC",
Tags = "c,test",
HtmlContent = "Hello World"
});
context.SaveChanges(); //here it breaks
內部異常種子方法信息:System.Data.SqlClient.SqlException:不能NULL值插入列 'ID',表「ASPNET-的webapp-20141022011020.dbo。文章;列不允許有空值。 INSERT失敗 如果我將[Key] adnotation從Article類中取出,並且如果採用[DatabaseGenerated(DatabaseGeneratedOption.Identity)] adnotation,則會出現以下錯誤:System.Data.SqlClient.SqlException:違規PRIMARY KEY約束'PK_dbo.Articles'。無法在對象'dbo.Articles'中插入重複鍵。重複鍵值是(00000000-0000-0000-0000-000000000000)。 在Guid的地方使用long/int,我得到一個更新數據庫錯誤,如:uniqueidentifier與bigint/int不兼容。
我該怎麼辦?爲什麼它不是用GUID生成一個合適的ID?
對不起...我添加NEWSEQUENTIALID()在哪裏? –
@CristianDan;你可以嘗試在數據庫上運行這個SQL查詢:'ALTER TABLE dbo.TableName ADD CONSTRAINT DF_ColumnName DEFAULT newsequentialid()FOR ColumnName',用您的表/ ID列替換名稱。 –
非常感謝..它的工作...我發現在哪裏寫newsequentialid():D謝謝 –