【问题标题】:EF4 insert data via scriptsEF4 通过脚本插入数据
【发布时间】: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


【解决方案1】:
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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多