Search code examples
sql-serversql-server-2008entity-framework-4identity-insert

EF4 insert data via scripts


I know that by default EF Code First sets StoreGeneratedPattern = Identit. It's OK. But I want to insert some part of data via sql script. I know that just one table in time can be SET IDENTITY_INSERT Rules ON;

But when I try to run

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;

I get error. And I want to set particular ids for setting particular logic constrains.

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'.

How I can resolve my problem?


Solution

  • SET IDENTITY_INSERT RulesOfGames ON;
    INSERT INTO RulesOfGames(RulesOfGameId, MaxScore, IsPossibleEqualsScore) VALUES(1, 20, 1);
    SET IDENTITY_INSERT RulesOfGames OFF;
    
    --KindSport
    SET IDENTITY_INSERT KindSports ON;
    INSERT INTO KindSports(KindSportId, Name, RulesOfGame_RulesOfGameId) VALUES(1, 'Футбол', 1);
    SET IDENTITY_INSERT KindSports OFF;