代码之家  ›  专栏  ›  技术社区  ›  Saif Khan

subsonic2.2和newSequentialID()主键列

  •  0
  • Saif Khan  · 技术社区  · 16 年前

    当我插入一个记录并尝试在插入后获取它的密钥时,Subsonic将返回00000000-0000-0000-00000000000。

    product.Save();
    GUID = product.ProdID;
    

    用正确的guid正确插入记录。

    你知道怎么解决这个问题吗?我使用的是2.2.0.0版

    这是我的表模式

    GO
    
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[ISA_810_ControlTracking](
        [ISAID] [uniqueidentifier] ROWGUIDCOL  NOT NULL CONSTRAINT     [DF_ISA_810_ControlTracking_ISAID]  DEFAULT (newsequentialid()),
        [ISA000_01_Authorization_Information_Qualifier] [varchar](2) NOT NULL,
        [ISA000_02_Authorization_Information] [varchar](10) NOT NULL,
        [ISA000_03_Security_Information_Qualifier] [varchar](2) NOT NULL,
        [ISA000_04_Security_Information] [varchar](10) NOT NULL,
        [ISA000_05_Interchange_Id_Qualifier] [varchar](2) NOT NULL,
        [ISA000_06_Interchange_Sender_Id] [varchar](15) NOT NULL,
        [ISA000_07_Interchange_Id_Qualifier] [varchar](2) NOT NULL,
        [ISA000_08_Interchange_Receiver_Id] [varchar](15) NOT NULL,
        [ISA000_09_Interchange_Date] [datetime] NOT NULL,
        [ISA000_10_Interchange_Time] [datetime] NOT NULL,
        [ISA000_11_Interchange_Control_Standards_Identifier] [varchar](1) NOT NULL,
        [ISA000_12_Interchange_Control_Version_Number] [varchar](5) NOT NULL,
        [ISA000_13_Interchange_Control_Number] [int] NOT NULL,
        [ISA000_14_Acknowledgment_Requested] [varchar](1) NOT NULL,
        [ISA000_15_Usage_Indicator] [varchar](1) NOT NULL,
        [ISA000_16_Component_Element_Separator] [varchar](1) NOT NULL,
        [IEA000_01_Number_Of_Included_Functional_Groups] [int] NOT NULL,
        [IEA000_02_Interchange_Control_Number] [int] NOT NULL,
     CONSTRAINT [PK_ISA_810_ControlTrackingIndex] PRIMARY KEY CLUSTERED 
    (
        [ISAID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,     ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
     CONSTRAINT [IX_ISA_810_ControlTracking] UNIQUE NONCLUSTERED 
    (
        [ISA000_06_Interchange_Sender_Id] ASC,
        [ISA000_08_Interchange_Receiver_Id] ASC,
        [ISA000_13_Interchange_Control_Number] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,     ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    SET ANSI_PADDING OFF
    
    1 回复  |  直到 16 年前
        1
  •  0
  •   Remus Rusanu    16 年前

    与标识类型不同,应用程序无法在插入时确定生成的GUID。虽然在T-SQL中可以使用output子句: INSERT ... OUTPUT inserted.$ROWGUIDCOL VALUES(...) 大多数ORM都不知道如何做到这一点。鉴于guid是一个guid,不管是谁生成的,我建议您在保存新记录之前在客户机中生成它,使用 UuidCreateSequential .

    推荐文章