我使用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谢谢 –