【发布时间】:2013-03-16 18:06:22
【问题描述】:
我知道默认情况下 EF Code First 设置 StoreGeneratedPattern = Identit。没关系。但我想通过 sql 脚本插入部分数据。我知道时间只有一张桌子可以SET IDENTITY_INSERT Rules ON;
但是当我尝试运行时
USE [GameDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--RULES OF GAME
SET IDENTITY_INSERT RulesOfGames ON;
INSERT INTO RulesOfGames(RulesOfGameId, MaxScore, IsPossibleEqualsScore) VALUES(1, 20, 1);
SET IDENTITY_INSERT RulesOfGames OFF;
--KindSport
SET IDENTITY_INSERT RulesOfGames ON;
INSERT INTO KindSports(KindSportId, Name, RulesOfGame_RulesOfGameId) VALUES(1, 'Футбол', 1);
SET IDENTITY_INSERT KindSports OFF;
我得到错误。我想设置特定的 id 来设置特定的逻辑约束。
Msg 8107, Level 16, State 1, Line 3
IDENTITY_INSERT is already ON for table 'GameDatabase.dbo.KindSports'. Cannot perform SET operation for table 'RulesOfGames'.
如何解决我的问题?
【问题讨论】:
-
尝试在两个插入语句块之间放置一个
GO。 -
@Love2Learn
Violation of PRIMARY KEY constraint 'PK_dbo.RulesOfGames'. Cannot insert duplicate key in object 'dbo.RulesOfGames'. The statement has been terminated. -
没关系,问题是您将 dbo.KindSports 的
Identity_Insert设置为 ON 并且没有将其关闭,并且第二个插入块中的代码中有错字,您有身份插入再次为 RulesOfGames 而不是 KindSports 设置为 ON。修复错字,突出显示底行并自行运行以清除您的身份插入设置,它应该可以工作。 -
您也可以终止连接并重新连接,因为设置存储在会话级别。
标签: sql-server sql-server-2008 entity-framework-4 identity-insert