Sql server 设置标识\u插入不起作用
如果使用实体框架和SQL Server执行,Sql server 设置标识\u插入不起作用,sql-server,entity-framework,Sql Server,Entity Framework,如果使用实体框架和SQL Server执行,SET IDENTITY\u INSERT将不起作用,但它将使用相同的凭据从同一数据库上的SSM工作(sa) 这会引发一个错误: System.Data.SqlClient.SqlException:“当identity_insert设置为OFF时,无法在表“Albums”中插入identity列的显式值。” 但是,当我在SSMS中运行这两行代码时,标识插入工作正常 使用: SQL Server 2014开发者版(64位)13.0.4202.2版,在
SET IDENTITY\u INSERT
将不起作用,但它将使用相同的凭据从同一数据库上的SSM工作(sa
)
这会引发一个错误:
System.Data.SqlClient.SqlException:“当identity_insert设置为OFF时,无法在表“Albums”中插入identity列的显式值。”
但是,当我在SSMS中运行这两行代码时,标识插入工作正常
使用:
- SQL Server 2014开发者版(64位)13.0.4202.2版,在本地主机上运行
- 实体框架版本6.0.0.0*
ExecuteSQL
方法如下:
public static void ExecuteSql(System.Data.Entity.Core.Objects.ObjectContext c, string sql)
{
var entityConnection = (System.Data.Entity.Core.EntityClient.EntityConnection)c.Connection;
DbConnection conn = entityConnection.StoreConnection;
ConnectionState initialState = conn.State;
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
}
尝试将
SET IDENTITY\u INSERT TableName置于同一查询中,如下所示:-
ExecuteSql(oContext, "SET IDENTITY_INSERT dbo.Albums ON;
INSERT INTO dbo.Albums ([Id], [Name], [Description])
VALUES (-2, 'album1', 'album1')");
尝试将SET IDENTITY\u INSERT TableName置于同一查询中,如下所示:-
ExecuteSql(oContext, "SET IDENTITY_INSERT dbo.Albums ON;
INSERT INTO dbo.Albums ([Id], [Name], [Description])
VALUES (-2, 'album1', 'album1')");
难以置信。想知道为什么会有不同。否则连接可以返回到语句之间的连接池,然后重置。您还可以显式打开DbContext.Database.Connection以强制其保持打开状态。难以置信。不知道这会有什么不同。否则,可以将连接返回到语句之间的连接池,然后重置。还可以显式打开DbContext.Database.Connection以强制其保持打开状态。