我运行此查询:
context.Database.SqlCommand("SET IDENTITY_INSERT [Songs] ON;");
就在我从.Add()
执行DbSet
方法之前。
我的数据仍在使用标识值而不是我提供的ID。
我只是暂时想要这个(用于数据迁移),以后它应该保留为自动生成的身份。
我正在为数据库使用SQL Server CE 4。
EF无法猜测您已经执行了IDENTITY_SET命令并相应地更改了其内部逻辑。
如果需要插入特定的Id值,也可以使用SqlCommand进行插入。
这可能是个问题。 DbContext
本身处理数据库连接。仅当在与打开身份插入相同的连接上执行插入时,此方法才有效。我认为它会在此命令后释放连接。您可以尝试使用其他DbContext的构造函数,并传递自己打开的DbConnection
实例并自行处理其关闭。