Sql server 使用序列作为实体框架中主键值的生成器插入
我有这样一个序列:Sql server 使用序列作为实体框架中主键值的生成器插入,sql-server,entity-framework,sql-server-2012,tsql-sequence,Sql Server,Entity Framework,Sql Server 2012,Tsql Sequence,我有这样一个序列: CREATE SEQUENCE dbo.NextWidgetId AS [bigint] START WITH 100 INCREMENT BY 2 NO CACHE GO CREATE TABLE [dbo].[Widget_Sequenced] ( [WidgetId] [int] NOT NULL DEFAULT(NEXT VALUE FOR dbo.NextWidgetId), [WidgetCost] [money] NOT NULL,
CREATE SEQUENCE dbo.NextWidgetId
AS [bigint]
START WITH 100
INCREMENT BY 2
NO CACHE
GO
CREATE TABLE [dbo].[Widget_Sequenced]
(
[WidgetId] [int] NOT NULL DEFAULT(NEXT VALUE FOR dbo.NextWidgetId),
[WidgetCost] [money] NOT NULL,
[WidgetName] [varchar](50) NOT NULL,
[WidgetCode] [int] NOT NULL,
[LastChangedBy] [int] NOT NULL,
[RowVersionId] [timestamp] NOT NULL,
CONSTRAINT [PK_Widget_Sequenced]
PRIMARY KEY CLUSTERED ([WidgetId] ASC) ON [PRIMARY]
) ON [PRIMARY]
还有一张像这样的桌子:
CREATE SEQUENCE dbo.NextWidgetId
AS [bigint]
START WITH 100
INCREMENT BY 2
NO CACHE
GO
CREATE TABLE [dbo].[Widget_Sequenced]
(
[WidgetId] [int] NOT NULL DEFAULT(NEXT VALUE FOR dbo.NextWidgetId),
[WidgetCost] [money] NOT NULL,
[WidgetName] [varchar](50) NOT NULL,
[WidgetCode] [int] NOT NULL,
[LastChangedBy] [int] NOT NULL,
[RowVersionId] [timestamp] NOT NULL,
CONSTRAINT [PK_Widget_Sequenced]
PRIMARY KEY CLUSTERED ([WidgetId] ASC) ON [PRIMARY]
) ON [PRIMARY]
有没有一种方法可以使用实体框架将新记录添加到此表结构中
我尝试将WidgetId
的StoreGeneratedPattern
设置为computed
,并尝试使用Identity
。两人都给了我错误
我用EF5试过这个。但是如果EF 6解决了这个问题,我可以改成EF 6。你可以用IDENTITY(100,2)替换你的序列,一切都会开箱即用 可以从6.2版开始,使用以下代码:
System.Data.Entity.SqlServer.SqlProviderServices.UseScopeIdentity=false代码>
更多关于的信息好吧,它是在避免问题,而不是解决问题。是的,IDENTITY(100,2)
的工作原理与此特定的序列
类似,只是据我所知,IDENTITY
没有缓存
选项。此外,这个SEQUENCE
对象可以在其他表中用于跨多个表生成单个序列-您无法使用IDENTITY
轻松复制此行为。据我所知,NOCACHE
选项用于减少索引中的间隙。但是表示“如果使用的下一个值请求数字,则仍可能出现间隙”。谢谢。我有了一个身份,现在转到一个序列。我需要能够更新该值(使其移动分区)。在哪里设置该值?表示序列列的字段需要什么属性?@jkerak