0
我知道默認情況下EF代碼優先設置StoreGeneratedPattern = Identit。沒關係。但我想通過sql腳本插入一部分數據。我知道,在時間只有一個表可以SET IDENTITY_INSERT Rules ON;
EF4通過腳本插入數據
但是當我嘗試運行
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」。 – 2013-03-26 19:35:14
@ Love2Learn違反PRIMARY KEY約束'PK_dbo.RulesOfGames'。不能在對象'dbo.RulesOfGames'中插入重複鍵。 該聲明已被終止。 – Ray 2013-03-26 19:40:13
沒關係,問題在於您將dbo.KindSports的Identity_Insert設置爲ON,並且未將其關閉,並且第二個插入塊中的代碼中存在拼寫錯誤,插入被重新設置爲ON爲RulesOfGames而不是KindSports。修復拼寫錯誤,突出顯示底部行並自行運行以清除身份插入設置,並且它應該可以工作。 – 2013-03-26 19:40:25