我正在处理一个 ASP .NET WEB EF 项目。我在尝试使用“更新迁移”更新数据库时遇到此错误。
它说:错误号:544,状态:1,类:16 当 IDENTITY_INSERT 设置为 OFF 时,无法在表“Genres”中为标识列插入显式值。
其他人以前也遇到过这个问题。 我尝试在这个网站上应用其他人在这个问题上建议的方法。在这些解决方案中,一个可能是解决我的问题的方法是我为表的 PK 输入了 tinyInt 类型。这是有道理的,因为我已经通过 [Required] 数据注释更改了它。
问题:如何将其改回 INT 类型或简单地解决此问题?
线程底部提到了设置:this.Property(t => t.TableID).HasColumnName("TableID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
但是哪里没有提到呢?我使用 VS 2017。
这是流派类:
public class Genre
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
}
这是我创建的空白迁移,然后填充了 sql 代码:
// <auto-generated />
using System.ComponentModel.DataAnnotations.Schema;
namespace MyNotes.Migrations
{
using System.CodeDom.Compiler;
using System.Data.Entity.Migrations.Infrastructure;
using System.Resources;
[GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
public sealed partial class PopulateGenresTable : IMigrationMetadata
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
private readonly ResourceManager Resources = new ResourceManager(typeof(PopulateGenresTable));
string IMigrationMetadata.Id
{
get { return "201809211642586_PopulateGenresTable"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return Resources.GetString("Target"); }
}
}
}
在对该文件进行更改后尝试运行 Update-Database 时出现错误:
namespace MyNotes.Migrations
{
using System.Data.Entity.Migrations;
public partial class PopulateGenresTable : DbMigration
{
public override void Up()
{
Sql("INSERT INTO Genres (ID, Name) VALUES (1,'Medicine')");
Sql("INSERT INTO Genres (ID, Name) VALUES (2,'Philosophy')");
}
public override void Down()
{
Sql("DELETE FROM Genres WHERE ID IN(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)");
}
}
}
最佳答案
嗯,因为您将 ID 声明为自动生成的列,SQL Server 不允许您专门为该列插入值。所以你应该按如下方式添加记录:
Sql("INSERT INTO Genres (Name) VALUES ('Medicine')");
Sql("INSERT INTO Genres (Name) VALUES ('Philosophy')");
关于c# - 错误 : Cannot insert explicit value for identity column in table - INT to tinyInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52446301/