我使用EF代码优先开发我的ASP.NET MVC4应用程序,同样使用迁移功能。我有特定的实体,我想设置显式的id值由于某些原因。我怎样才能做到这一点?我试着用这样的属性标记id属性:使用EF代码优先和迁移的明确ID值
public class NewsSource
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id { get; set; }
public string Title { get; set; }
public string WebSiteUrl { get; set; }
}
然后,添加相应的迁移,删除数据库,并尝试使用种子()方法,这样来更新数据库:
context.NewsSources.AddOrUpdate(x => x.Title,
new NewsSource {Id = 654, Title = "ABC", WebSiteUrl = @"http://www.abc.com/"},
new NewsSource {Id = 22, Title = "XYZ", WebSiteUrl = @"http://XYZ.ru/"});
并且Ive得到这个错误:“IDENTITY_INSERT设置为OFF时,无法在表'NewsSources'中插入标识列的显式值。我如何使用EF和迁移将identity_insert设置为ON。正如我从许多主题理解它是不可能的,我必须使用直接的SQL命令。我错了吗?
我认为你没有错。只要你把'[Key]'注释掉了,EF就会想要通过它自己来处理这个ID。也许你应该为你的桌子考虑另一种结构。 我可能有错,但我的研究给了我和你一样的结果:这是不可能的。 – Atlasmaybe