我的SQL序列有问题,这是我第一次使用它。 有一些关于sql sequence和约NOCACHE parameter的内容。
我在SQL中创建了一个没有缓存的序列,因为我总是需要我的索引是连续的(最大的问题是我在插入后需要他的主键值,所以我可以创建并插入一个新对象进入另一张表) 这是我的序列,也应该自动增量:
CREATE SEQUENCE TestSequence
AS INT
START WITH 1
INCREMENT BY 1
NO CACHE
这是我的桌子,myTableId - 主键
CREATE TABLE database.dbo.myTable
(myTableId INT NOT NULL,
name VARCHAR(10))
GO
ALTER TABLE dbo.myTable
ADD DEFAULT NEXT VALUE FOR dbo.TestSequence FOR myTableId
GO
当我在sql中使插入语句完美地工作时(我也重启我的sql连接,之后myTableId没有跳过数字),但是当我从.net插入时,似乎它无法识别自动增量:
在第一次插入时,索引得到值0(???应该是1),之后我得到这个错误: “违反PRIMARY KEY约束'PK_myTable'。无法在对象'dbo.myTable'中插入重复键。重复键值为(0)。\ r \ n语句已终止。”
因为第二个对象与第一个对象具有相同的myTableId。 这是我的代码:
myTable myNewObject = new myTable{name = "dada"};
_db.myTable.Add(myNewObject);
_db.SaveChanges();
int id = myNewObject.myTableId; //here i'm getting the foreign-key value that i need
我不知道它是否相关,但我正在使用SQL 2012和MVS 2012(实体框架)
你知道我的错误在哪里或者我错过了什么吗?谢谢