使用Entity Framework插入没有缓存的表(使用SQL序列)

时间:2013-11-11 12:51:06

标签: sql entity-framework

我的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(实体框架)

你知道我的错误在哪里或者我错过了什么吗?谢谢

0 个答案:

没有答案